C++中的赋值并不会构造新的对象
2011-11-01 17:33
267 查看
程序如下,为什么结果是:
A
B
~B
~A
~A
而不是:
A
A
B
~B
~A
~A
呢,求解答!!!
class A
{
public:
A(){cout<<"A"<<endl;}
~A(){cout<<"~A"<<endl;}
};
class B
{public:
B(A &a):_a(a){cout<<"B"<<endl;}
~B(){cout<<"~B"<<endl;}
private:
A _a;
};
int main()
{
A a; //调用A的构造函数输出A
B b(a); //为什么这里不先调用基类A的构造函数呢?????????????????
return 0;
}
//只分配了,一个空间但是自动释放了两次。
A
B
~B
~A
~A
而不是:
A
A
B
~B
~A
~A
呢,求解答!!!
class A
{
public:
A(){cout<<"A"<<endl;}
~A(){cout<<"~A"<<endl;}
};
class B
{public:
B(A &a):_a(a){cout<<"B"<<endl;}
~B(){cout<<"~B"<<endl;}
private:
A _a;
};
int main()
{
A a; //调用A的构造函数输出A
B b(a); //为什么这里不先调用基类A的构造函数呢?????????????????
return 0;
}
//只分配了,一个空间但是自动释放了两次。
相关文章推荐
- C++对象的构造、赋值和析构
- C++:析构函数、对象生命周期、类型转换构造、拷贝构造、拷贝赋值、深浅拷贝
- C++ 对象构造, 拷贝, 赋值和隐式类型转换总结
- C++ 对象构造, 初始化, 赋值
- C++对象的构造、赋值和析构
- C++对象的拷贝与赋值操作
- [读书笔记] 深入探索C++对象模型-第五章-构造、析构、拷贝语义学(下)
- 深入探索C++对象模型之五 --- 析构、构造、拷贝语意学
- C++IO对象不可复制或赋值
- 《 C++深度剖析》学习日志十三——对象的构造(中)
- C++中类对象的初始化与赋值的区别
- 『C/C++』C++构造函数无返回值,如何判断对象是否“构造”成功?
- C++构造与析构(18) - 静态对象(static object)何时销毁
- C++ 对象初始化和赋值
- 深度搜索C++对象模型2.2 构造函数语义学-Default Constructor的构造操作
- C++:基类与派生类对象之间的赋值兼容关系
- C++对象模型之默认构造函数的构造操作
- C++对象的拷贝与赋值操作
- C++对象的构造和析构
- c++对象成员变量的构造和析构顺序