所以我仍然在这里弄清楚C++引用的语义.
我有一个类作为成员的引用,我在构造函数中初始化引用.
template<class T>
class AVLNode {
private:
T & data;
public:
AVLNode(T & newData) {
data = newData;
}
};
Run Code Online (Sandbox Code Playgroud)
但是我在构造函数行上得到了这个错误:
error: uninitialized reference member ‘AVLNode<int>::data’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
我没有得到这个,我在构建类时立即初始化引用,所以引用未初始化的问题应该没有问题吗?
tao*_*ocp 15
由于data是引用,您必须在构造函数初始化程序中初始化它:
AVLNode(T & newData): data(newData) {
}
Run Code Online (Sandbox Code Playgroud)
您可能会发现此帖子很有用:必须在构造函数初始化列表中初始化引用成员变量.您可能还需要明白之间的差别initialization,并assignment当你写一个类的构造函数.
引自C++ Primer pp455:
必须在构造函数初始值设定项中初始化某些成员.对于此类成员,在构造函数体中分配它们不起作用.不具有默认构造函数的类类型的成员以及const或引用类型的成员必须在构造函数初始值设定项中初始化,而不管其类型如何.
| 归档时间: |
|
| 查看次数: |
14845 次 |
| 最近记录: |