c++ - 缺少成员初始值设定项列表的示例。184 的编程原理和使用 C++ 的实践,第 2 版
问题描述
我目前在“编程:使用 C++ 的原则和实践”(第 2 版,第 3 次印刷)的第 6 章的部分内容中遇到问题。
根据本书的索引,成员初始化器列表的示例在第 184 页。
第 184 页的部分内容如下:
“在这里,我们将只提供两个成员函数,为我们提供一种更方便的初始化 Token 的方法:
class Token {
public:
char kind; // what kind of token
double value; // for numbers: a value
};
我们现在可以初始化(“构造”)Token 对象。例如:
Token t1 {'+'}; // initialize t1 so that t1.kind = '+'
Token t2 {'8,' 11.5}; // initialize t2 so that t2.kind = '8' and t2.value = 11.5
"
这些代码集之一是索引所指示的成员初始值设定项列表的示例吗?我有点困惑,因为基于另一个 Stackoverflow 答案(构造函数中这个奇怪的冒号成员 (" : ") 语法是什么?),我认为成员初始化器列表看起来更像:
Name_value(string n, int v)
:name(n), value(v) { }
(在 Github 上 Chrinkus 的以下代码中找到:https ://github.com/Chrinkus/stroustrup-ppp/blob/master/chapter06/ex04_Name_value.cpp )
class Name_value {
public:
string name;
int value;
Name_value(string n, int v)
:name(n), value(v) { }
};
我认为我弄错的可能性远大于书中的错字,但尽管如此,我发现这本书的这一部分令人困惑。感谢您提供的任何反馈。
更新:我发现第 6 章的练习包含以下代码很有趣:
Token(char ch) // make a Token from a char
: kind(ch), value(0)
{}
Token(char ch, double val) // make a Token from a char and a double
: kind(ch), value(val)
{}
那些是成员初始化器,不是吗?我想知道作者在写“这里,我们将只提供两个成员函数,为我们提供一种更方便的初始化 Tokens 的方式:”时是指这两个函数:
解决方案
我通过电子邮件联系了 Bjarne,他立即告诉我这是一个错误,将在下一次印刷中修复。所以我的猜测是,第 184 页的那部分内容大致如下:
“在这里,我们将只提供两个成员函数,为我们提供一种更方便的初始化 Token 的方法:
class Token {
public:
char kind; // what kind of token
double value; // for numbers: a value
Token(char ch) // make a Token from a char
:kind(ch), value(0) { }
Token(char ch, double val) // make a Token from a char and a double
:kind(ch), value(val) { }
};
我们现在可以初始化(“构造”)令牌对象。. 。”
上面代码中的两个成员初始化器列表取自第 6 章练习的示例代码,可在此处获得:http: //www.stroustrup.com/Programming/calculator02buggy.cpp(请注意,此代码包含一些故意读者打算在练习中解决的错误。)
我希望这对其他对成员初始化列表感到困惑的人有用。到目前为止,这本书对我非常有用,我打算继续阅读它。
推荐阅读
- python - 如何使用 requests.session 以便在后续获取请求中保留和重用标头
- python - 迭代时如何获得二维 Numpy 数组中的位置?
- mysql - 获取最新版本表并按其他表名称变量排序的 SQL 查询
- php - 删除早于日期的 WP 帖子的特色图片
- rust - 如何将 sink 从 0.1 期货转换为 0.3 期货
- python - 在详细信息视图中使用表单时,UpdateVIew 表单数据未得到预填充
- json - 括号配置不是有效的 JSON?
- php - 使用 PHP Telegram Bot InputMediaPhoto 方法
- python - 如何保存具有透明外部背景但彩色子图的 matplotlib 图形?
- javascript - 在 Javascript 中,是否可以在知道其名称字符串的情况下动态调用本地函数?