C++类内定义引用成员

前言:

先来回答一个问题:C++类内可以定义引用数据成员吗?

答案是肯定的,但是必须通过构造函数初始化列表初始化类内的引用!!!


C++类内可以定义引用成员变量,但要遵循以下三个规则:

  1. 不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
  2. 构造函数的形参也必须是引用类型
  3. 不能在构造函数的函数体赋值(为什么不是说初始化呢?因为所有的成员变量都是在初始化列表中完成的),必须在初始化列表中进行初始化。

构造函数分为初始化和计算两个阶段,前者对应成员初始化链表,后者对应构造函数函数体。引用必须在初始化阶段,也即在成员初始化链表中完成,否则编译时会报错(引用未初始化)。

代码展示:

#include <iostream>
using namespace std;

class node
{
    
    
public:
	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;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43743711/article/details/114323539