3个构造函数调用,却 1 个析构函数调用,为什么?
#include <iostream>using namespace std;class CB; class CA { public: CA(); CA(int); ~CA(); bool Afun(void) { cout<<"Afun()"<<endl; return true; } CB *b; }; class CB { public: CB()// : a(1) { cout<<"CB Constructor function"<<endl; i=0; } ~CB() { cout<<"CB Destructor function"<<endl; } bool Bfun(void) { if(a.Afun()) { cout<<"Bfun()"<<endl; return true; } return false; } int i; private: CA a ; }; CA::CA() { b = NULL; cout<<"CA Constructor no params function"<<endl;} CA::CA(int j) { cout<<"CA Constructor function"<<endl; b=new CB; b-> i=j; } CA::~CA() { cout<<"CA Destructor function"<<endl; free(b); } int main() { CA ma(0); ma.b-> Bfun(); cout<<ma.b->i; cout<<endl; return 0; }
CA::~CA() { cout<<"CA Destructor function"<<endl; delete b;}
[解决办法]
我是说,任何个对象在创建时都要调用构造函数,销毁时都要调用析构函数。若你去实现这两个函数,在里面添加 cout 这类的函数,肯定他们是成对出现的
==========
是的,但是这个跟你问的问题有啥关系吗?