C++类内定义引用成员
遵循三个规则
C++类内可以定义引用成员变量,但要遵循以下三个规则:
- 不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
- 构造函数的形参也必须是引用类型
- 不能在构造函数的函数体赋值(为什么不是说初始化呢?因为所有的成员变量都是在初始化列表中完成的),必须在初始化列表中进行初始化。
构造函数分为初始化和计算两个阶段,前者对应成员初始化链表,后者对应构造函数函数体。引用必须在初始化阶段,也即在成员初始化链表中完成,否则编译时会报错(引用未初始化)
#include <iostream> using namespace std; class node { public: //规则1:提供构造函数来初始化引用成员变量 //规则2:构造函数的形参也必须是引用类型 //规则3:必须在初始化列表中进行初始化 node(int &target) :st(target){ cout << "lalala" << endl; } void printst(){ cout << st << endl; } private: int &st; }; int main() { int op = 123; node bk(op); bk.printst(); return 0; }