C++ 中调用构造函数有返回值吗?

C++中的构造函数:

最近在面试中问道一个问题,C++中构造函数有返回值吗?

例如

class A
{
public: 
	A():x(1){}
	A(int i):x(i){}
private:
	int x;
}

官方解释在C++标准规定了构造/析构/自定义类型转换符不可以指定返回类型。

如果构造函数有返回值比如下:有返回值且返回值为int类型;

//若构造函数有参数
 int A():x_(0) { return 1; //1表示构造成功,0表示失败}

//此时如果这样定义一个临时对象:

A a = A(); //那么此时的 a.x等于多少??

因为 A()调用的是无参构造函数,此时无参构造函数调用成功,返回值为1,此时 x 赋初值为 0,并将1赋值初始化给A a, 及又会调用有参构造函数 A(int i) , 那么 a.x有变成了1,就产生了语法歧义;
构造函数的调用之所以不设返回值,是因为构造函数的特殊性决定的。从基本语义角度来讲,构造函数返回的应当是所构造的对象。否则,我们将无法使用临时对象:

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值