有关构造函数的问题
- C/C++ code
class B{public:B(){cout<<"default constructor"<<endl;}~B(){cout<<"destructed"<<endl;}B(int i):data(i) //B(int) works as a converter ( int -> instance of B){cout<<"constructed by parameter " << data <<endl;}private:int data;};B Play( B b) {return b ;} void main(){B t1 = Play(5); B t2 = Play(t1); }
play的参数是B,直接传一个5进去,这个为什么不会报错??
然后结果是:
esults:
int main(int argc, char* argv[]) constructed by parameter 5
{ destructed B(5)形参析构
B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构
return 0; destructed t2 注意顺序!
} destructed t1
谁能稍微解释一下,谢谢
[解决办法]
constructed by parameter 5 //这里进行了隐士的转换
destructed //2次默认拷贝的析构
destructed //2次带参数构造析构
destructed
destructed