1.派生类与基类的构造函数、析构函数调用顺序。
构造函数:先基类后派生类
析构函数:与构造函数相反
# include <iostream>
using namespace std;
class c {
public :
c ( ) { cout<< "C类构造函数" << endl; }
~ c ( ) { cout<< "C类析构函数" << endl; }
} ;
class son : public c {
public :
son ( ) { cout<< "son类构造函数" << endl; }
~ son ( ) { cout<< "son类析构函数" << endl; }
} ;
int main ( ) {
son obj;
return 0 ;
}
2.含对象成员的构造函数、析构函数调用顺序。
构造函数:先对象成员后派生类
析构函数:与构造函数相反
# include <iostream>
using namespace std;
class c {
public :
c ( ) { cout<< "C类构造函数" << endl; }
~ c ( ) { cout<< "C类析构函数" << endl; }
} ;
class son {
c obj;
public :
son ( ) { cout<< "son类构造函数" << endl; }
~ son ( ) { cout<< "son类析构函数" << endl; }
} ;
int main ( ) {
son obj;
return 0 ;
}
3.多重继承派生类的构造函数、析构函数调用顺序。
构造函数:①先基类后派生类。②基类构造函数次序:基类被继承时的声明次序,从左到右依次调用。
析构函数:与构造函数相反
# include <iostream>
using namespace std;
class father {
public :
father ( ) { cout<< "father类构造函数" << endl; }
~ father ( ) { cout<< "father类析构函数" << endl; }
} ;
class mother {
public :
mother ( ) { cout<< "mother类构造函数" << endl; }
~ mother ( ) { cout<< "mother类析构函数" << endl; }
} ;
class son : public father , public mother {
public :
son ( ) { cout<< "son类构造函数" << endl; }
~ son ( ) { cout<< "son类析构函数" << endl; }
} ;
int main ( ) {
son obj;
return 0 ;
}
4.含对象成员的派生类的构造函数、析构函数调用顺序。
构造函数:先基类,再对象成员,再派生类
析构函数:与构造函数相反
# include <iostream>
using namespace std;
class father {
public :
father ( ) { cout<< "father类构造函数" << endl; }
~ father ( ) { cout<< "father类析构函数" << endl; }
} ;
class mother {
public :
mother ( ) { cout<< "mother类构造函数" << endl; }
~ mother ( ) { cout<< "mother类析构函数" << endl; }
} ;
class son : public father {
mother obj;
public :
son ( ) { cout<< "son类构造函数" << endl; }
~ son ( ) { cout<< "son类析构函数" << endl; }
} ;
int main ( ) {
son obj;
return 0 ;
}
4.含对象成员的多重继承派生类的构造函数、析构函数调用顺序。
构造函数:先基类(基类被继承时的声明次序从左到右依次继承),再对象成员,再派生类
析构函数:与构造函数相反
# include <iostream>
using namespace std;
class father {
public :
father ( ) { cout<< "father类构造函数" << endl; }
~ father ( ) { cout<< "father类析构函数" << endl; }
} ;
class mother {
public :
mother ( ) { cout<< "mother类构造函数" << endl; }
~ mother ( ) { cout<< "mother类析构函数" << endl; }
} ;
class uncle {
public :
uncle ( ) { cout<< "uncle类构造函数" << endl; }
~ uncle ( ) { cout<< "uncle类析构函数" << endl; }
} ;
class son : public father , public mother {
uncle obj;
public :
son ( ) { cout<< "son类构造函数" << endl; }
~ son ( ) { cout<< "son类析构函数" << endl; }
} ;
int main ( ) {
son obj;
return 0 ;
}