读书人

有关构造函数的有关问题

发布时间: 2012-04-01 17:23:46 作者: rapoo

有关构造函数的问题

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

读书人网 >C++

热点推荐