C++ 使用默认构造函数

在阅读书籍时,发现对这一段内容特别陌生,特地记下来。

内容来自于 C++ Primer 5 

下面的obj的声明可以正常编译通过:

Sales_data obj()                            // 正确,定义了一个函数而非对象
if(obj.isbn()) == primer_5th_ed.isbn())     // 错误,obj是一个函数

担当我们试图使用obj时,编译器将报错,提示我们不能对函数使用成员访问元素符。问题在于,尽管我们想声明一个默认初始化的对象,obj实际的含义缺失一个不接收任何参数的函数并且其返回值是Sales_data类型对象。

如果想顶一个使用默认构造函数进行初始化对象,正确的方法是去掉对象名之后的空地括号对:

// 正确,obj是个默认初始化的对象
Sales_data obj;

对于C++的新手程序员来说有一种常犯的错误,他们试图以如下的形式声明一个用默认构造函数初始化的对象:

Sales_data obj()                            // 错误,声明一个函数而非对象
Sales_data obj2                             // 正确,obj2是一个对象而非函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值