一、类内定义引用成员
c++类内可以定义引用成员变量,但要遵循以下三个规则:
1、不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
2、构造函数的形参也必须是引用类型
3、不能在构造函数里初始化,必须在初始化列表中进行初始化。
构造函数分为初始化和计算两个阶段,前者对应成员初始化链表,后者对应构造函数函数体。引用必须在初始化阶段,也即在成员初始化链表中完成,否则编译时会报错(引用未初始化)。
示例:
#include <iostream>
using namespace std;
class A
{
public:
A(int &target) :a(target)
{
cout << "构造函数" << endl;
}
void printA()
{
cout << "a is:" << a << endl;
}
private:
int &a;
};
int main()
{
int a = 20;
A r(a);//依旧使用自定义的构造函数
r.printA();
int &b = a;
A r1(b);
r1.printA();
system("pause");
return 0;
}
结果为:

二、类内基础函数
class CTest
{
public:
CTest(); //构造函数
CTest(const CTest&); //复制构造函数
CTest& operator = (const CTest&); //赋值符
};
CTest::CTest()
{
cout << "Constructor of CTest" << endl;
}
CTest::CTest(const CTest& arg)
{
cout << "Copy Constructor of CTest" << endl;
}
CTest& CTest::operator = (const CTest& arg)
{
cout << "Assign function of CTest" << endl;
return *this;
}
本文介绍了C++中类内定义引用成员的规则,包括初始化构造函数、引用类型的形参及在初始化列表中的设置。同时涵盖了类的基础函数如构造函数、复制构造函数和赋值运算符的实现。
467

被折叠的 条评论
为什么被折叠?



