C++ 关于构造函数的返回值

结论:构造函数确实隐式地返回了一个该类的对象。

或许底层原理并非如此,但对于接触底层不多的用户来说,这样去理解,我想是没什么大问题的。

        最近在学习C++类与对象时,看到了“构造函数不返回任何东西”的说法。然而学到异常处理的部分,却又看到了“throw classname();”这样的语句,这让我非常纳闷。按理说,throw一个函数,应该等价于throw这个函数返回值。但是构造函数classname()不是没有返回值吗?那这里到底throw了个啥?

        在好奇心的驱使下,我百度了一圈,发现普遍共识还是构造函数不返回任何东西。然而鉴于“classname obj=classname();”和“throw classname();”这样的写法确实能通过编译,我这个没接触过底层的人还是更愿意相信,构造函数是返回了某些东西的,尽管官方没有承认。

        那么它到底返回了什么内容呢?是一个对象吗?还是一个对象的引用?我决定自己动手测一测。(看到个别说法是返回this指针,这是不可能的。如果返回this指针,那么“classname obj=classname();”这样的语句就无法通过编译,因为不能把指针转换为对象)

上测试代码:

#include <iostream>
using namespace std;

class A {
public:
    //这是构造函数
    A(void)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值