C++ 不能使用默认构造函数的情况

类中含有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;
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值