构造函数和析构函数的调用问题
2015-05-27 15:26
239 查看
构造函数和析构函数的调用问题
# include <iostream>
using namespace std;
class A
{
public:
A() { cout<<"create A"<<endl; }
A(const A& other){ cout<<"copy A"<<endl;} //复制构造函数
~A() { cout<<"~A"<<endl; }
};
class C
{
public:
C() { cout<<"create C"<<endl; }
C(const A& other){ cout<<"copy C"<<endl;} //复制构造函数
~C() { cout<<"~C"<<endl; }
};
class B:public A
{
public:
B()
{
cout<<"create B"<<endl;
}
~B()
{
cout<<"~B"<<endl;
}
private:
C _a;
};
int main(void)
{
B b;
cout<<"------------------------"<<endl;
}
结果为:
create A
create C
create B
------------------------
~B
~C
~A
我们可以看到,这个地方先是调用parent class的构造函数,然后对成员变量C类型的构造函数,然后再最后执行B类型的构造函数。
析构的过程就是上面的过程反过来。
所以Aesthetic92的解释有一部分不是很准确。我认为。
更加准确的说明应该是,
最开始析构b,~B,这个是没有争议的。
接着是析构b的成员变量_a,所以是~A
接着是b的parent class(基类)的~A
最后才是a的析构~A
# include <iostream>
using namespace std;
class A
{
public:
A() { cout<<"create A"<<endl; }
A(const A& other){ cout<<"copy A"<<endl;} //复制构造函数
~A() { cout<<"~A"<<endl; }
};
class C
{
public:
C() { cout<<"create C"<<endl; }
C(const A& other){ cout<<"copy C"<<endl;} //复制构造函数
~C() { cout<<"~C"<<endl; }
};
class B:public A
{
public:
B()
{
cout<<"create B"<<endl;
}
~B()
{
cout<<"~B"<<endl;
}
private:
C _a;
};
int main(void)
{
B b;
cout<<"------------------------"<<endl;
}
结果为:
create A
create C
create B
------------------------
~B
~C
~A
我们可以看到,这个地方先是调用parent class的构造函数,然后对成员变量C类型的构造函数,然后再最后执行B类型的构造函数。
析构的过程就是上面的过程反过来。
所以Aesthetic92的解释有一部分不是很准确。我认为。
更加准确的说明应该是,
最开始析构b,~B,这个是没有争议的。
接着是析构b的成员变量_a,所以是~A
接着是b的parent class(基类)的~A
最后才是a的析构~A
相关文章推荐
- C++中构造函数和析构函数避免调用虚函数的问题
- C++对象构造函数与析构函数的调用时间问题
- 构造函数和析构函数中调用虚函数有什么问题?
- C++中 构造函数 析构函数 能否调用虚函数的问题
- 关于基类指针指向子类对象,构造函数和析构函数调用的顺序的问题。
- C++中构造函数和析构函数避免调用虚函数的问题
- 构造函数,析构函数内调用虚函数问题
- 构造函数和析构函数中调用虚函数有什么问题
- 对象初始化以及在构造函数和析构函数中调用virtual函数的问题
- C++中构造函数和析构函数避免调用虚函数的问题
- C++中构造函数和析构函数避免调用虚函数的问题 转载
- C++中构造函数和析构函数避免调用虚函数的问题
- 构造函数和析构函数中调用虚函数有什么问题?
- 摘:C++中构造函数和析构函数避免调用虚函数的问题
- C++中构造函数和析构函数避免调用虚函数的问题
- 关于创建对象时调用构造函数和析构函数的若干问题
- C++对象构造函数与析构函数的调用时间问题
- 构造函数和析构函数调用问题
- 关于构造函数,拷贝构造函数与析构函数的自动调用的问题分析
- c++有关构造函数和析构函数中调用虚函数问题