类中含有const
或引用类型
成员变量时编译级别禁止使用默认构造函数。
测试代码(public成员变量仅为测试使用):
#include <iostream>
using namespace std;
class testOperater
{
private:
const int& num;
const char* name;
};
int main() {
testOperater test;
system("pause");
return 0;
}
Visual Studio 2019 报错如下:
E1790
无法引用 “…” 的默认构造函数 – 它是已删除的函数
原因分析:
已删除的函数指的是:
testOperater() = delete;
相当于编译器(Visual Studio 2019)帮我们自动添加了这一条语句,原因就是有const或者引用类型的成员变量不能默认初始化
解决方案:只能自己定义构造函数
修改测试代码:
#include <iostream>
using namespace std;
class testOperater
{
public:
testOperater() :num(1), name("sfd") {
}
private:
const int& num;
const char* name;
};
int main() {
testOperater test;
system("pause");
return 0;
}