C++直接初始化与复制初始化的区别深入解析(3)
而如果把复制构造函数声明为私有的,则对象之前的复制不能进行,即不能把临时对像作为参数,调用复制构造函数,所以编译就认为ClassTest ct2 = "ab"与ClassTest ct2("ab")是不等价的,也就不会帮你做这个优化,所以编译出错了。
注:根据上面的代码,有些人可能会运行出与本人测试不一样的结果,这是为什么呢?就像前面所说的那样,编译器会为代码做一定的优化,但是不同的编译器所作的优化的方案却可能有所不同,所以当你使用不同的编译器时,由于这些优化的方案不一样,可能会产生不同的结果,我这里用的是g++4.7。
相信本文所述对大家深入学习C++程序设计有一定的参考借鉴作用。