今天俺看到了一个比较疑惑的地方,公司的一段C++ code中有一个类中带了一个引用对象,如下所示:
class Class1
{
public:
...
private:
object & element;
}
然后对于这个element的初始化方法我从来没见过,mark一下,因为我C++还是初学,所以这种问题还是了解一下,应该是某种规范,不知是否是拷贝构造函数:
Class1 :: Class1(..., object1 & object1) element(object1)
{
...
}
不知道这样是不是就直接将object1直接赋值给Class1对象的object成员了???因为这里是引用,所以相当于C里面的指针赋值。
结果在网上搜索了一下前辈们的文章,已经有很多经典解释了,答案是C++内的引用成员必须在初始化列表内初始化。类似的,const成员也必须在初始化列表内初始化。
可以参看下面的链接:
http://jodonchu.blog.51cto.com/3822410/1085831