本文共 522 字,大约阅读时间需要 1 分钟。
本节书摘来自异步社区出版社《C++覆辙录》一书中的第2章,第2.7节,作者: 【美】Stephen C. Dewhurst(史蒂芬 C. 杜赫斯特),更多章节内容可以访问云栖社区“异步社区”公众号查看。
对象的默认初始化语句不应该写成一个空的初始化实参列表的形式,因为它会被解释成一个函数声明:
String s("Semantics, not Syntax! "); // 显式指定了用以初始化的实参String t; // 默认的对象初始化语句⑧String x();⑨// 一个函数声明```⑧译者注:对象名后不带括号。⑨译者注:这里声明了一个不带实参并返回`String`型别的函数,可能违反代码作者本意。这是一个C++语言内廪的多义性。实践角度来说,语言“掷硬币”决定了x是一个函数声明20。请注意,该多义性问题在new表达式中并不发作:
String *sp1 = new String(); // 这里没有多义性⑩
String *sp2 = new String; // 一样的意思`
⑩译者注:出于一致性考量不推荐。当然,第二种形式更好。因为它被更广泛地使用,和对象的声明语句也更具正交性。 转载地址:http://fyxtx.baihongyu.com/