#include <iostream>
using namespace std;
class A{
public:
A(){
cout<<"default construct"<<endl;
}
A(const A&){
cout<<"copy constructor"<<endl;
}
A operator = (const A&){
cout<<"== constructor"<<endl;
}
~A(){
cout<<"deconstructor"<<endl;
}
int s;
};
A bar(){
A temp;
temp.s = 12;
return temp;
}
int main(){
A a = bar();
/*
如果没做优化,则会:
default construct
copy constructor
deconstructor
deconstructor
copy constructor
deconstructor
*/
/*
如果有编译器优化,则会:
default construct
copy constructor
desconstructor
desconstructor
*/
return 0;
}
构造函数初始化参数列表
#include <iostream>
using namespace std;
class A{
public:
A(int i){
cout<<"default construct"<<endl;
}
int fun(){
return 2;
}
int i;
};
class B:public A{
public:
B():i(12),A(fun()){
}
int i;
};
int main(){
B b;
return 0;
}