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;
}
posted on 2023-03-13 10:21  斗战胜佛美猴王  阅读(233)  评论(0编辑  收藏  举报