Test
{
Test(test& t1)
{
this->t=t1;
}
private:
test t;
}
相信很多人跟我一样,非常困惑为什么Test构造时会先调用test的构造函数,再调用test类的赋值操作符。那是因为赋值操作符不能产生新的对象,Test构造时免不了要构造一个test对象。所以正常流程是 先构造t,然后再调用赋值操作符赋值t(this->t=t1)。
如果写成
Test
{
Test(test& t1):t(t1)
{
}
private:
test t;
}
就只会调用一次test的拷贝构造函数,构造出t。所以初始化列表比赋值更高效。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/bama2488313716/article/details/46746401