Posted on 2012-12-16 14:52
鑫龙 阅读(588)
评论(0) 编辑 收藏 引用 所属分类:
c++
习惯了这样写,但有时候会反问下自己为什么要const和&?
1.为什么要&?
答:&是必须的。
如果它不是引用,在传递参数时,会产生一个局部变量做参数,而这个局部变量的构造又要调copy构造函数一次,....那就子子孙孙无穷匮了....
但如果是引用,在传递参数时候,局部变量只需要绑定原变量,而不需要再一次调用copy构造函数。
2.为什么要const?
答:const不是必须的。
构造函数是用引用方式传递复制对象,引用方式传递的是地址,因此在构造函数内对该引用的修改会影响源对象。而你在用对象a1构造a2时,自然不希望复制构造函数会改变a1的内容,因此要防止复制构造函数内部修改该引用,所以一般用const声明。加不加const还是需要看copy构造的行为,比如std::auto_ptr的构造函数,就没有const,因为它要获得原有对象指针的拥有权。