第 12 页缺少成员初始值设定项列表的示例。 184 of Programming Principles and Practice Using C++,第 2 版
Missing example of a Member Initializer List on p. 184 of Programming Principles and Practice Using C++, 2nd ed
我目前在阅读 "Programming: Principles and Practice Using C++"(第 2 版,第 3 次印刷)第 6 章的部分内容时遇到问题。
根据本书的索引,成员初始值设定项列表的示例在第 184 页。
第184页部分内容如下:
"这里,我们只提供两个成员函数,让我们更方便的初始化Token:
class Token {
public:
char kind; // what kind of token
double value; // for numbers: a value
};
我们现在可以初始化 ("construct") 个令牌对象。例如:
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
这些代码集中的一组是索引指示的成员初始值设定项列表的示例吗?我有点困惑,因为根据另一个 Whosebug 答案 (What is this weird colon-member (" : ") syntax in the constructor?),我认为成员初始化列表看起来更像:
Name_value(string n, int v)
:name(n), value(v) { }
(Chrinkus 在 Github 上的以下代码中找到: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)
{}
那些是成员初始值设定项,不是吗?不知道作者写"Here, we'll just provide two member functions to give us a more convenient way of initializing 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) { }
};
我们现在可以初始化 ("construct") 个令牌对象。 . ."
以上代码中的两个成员初始化列表取自第 6 章练习的示例代码,可在此处获得:http://www.stroustrup.com/Programming/calculator02buggy.cpp(请注意,此代码包含一些 故意 reader 旨在在练习中解决的错误。)
我希望这对其他对成员初始值设定项列表感到困惑的人有用。这本书到目前为止对我很有用,我打算继续通读它。
我目前在阅读 "Programming: Principles and Practice Using C++"(第 2 版,第 3 次印刷)第 6 章的部分内容时遇到问题。
根据本书的索引,成员初始值设定项列表的示例在第 184 页。
第184页部分内容如下:
"这里,我们只提供两个成员函数,让我们更方便的初始化Token:
class Token {
public:
char kind; // what kind of token
double value; // for numbers: a value
};
我们现在可以初始化 ("construct") 个令牌对象。例如:
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
这些代码集中的一组是索引指示的成员初始值设定项列表的示例吗?我有点困惑,因为根据另一个 Whosebug 答案 (What is this weird colon-member (" : ") syntax in the constructor?),我认为成员初始化列表看起来更像:
Name_value(string n, int v)
:name(n), value(v) { }
(Chrinkus 在 Github 上的以下代码中找到: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)
{}
那些是成员初始值设定项,不是吗?不知道作者写"Here, we'll just provide two member functions to give us a more convenient way of initializing 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) { }
};
我们现在可以初始化 ("construct") 个令牌对象。 . ."
以上代码中的两个成员初始化列表取自第 6 章练习的示例代码,可在此处获得:http://www.stroustrup.com/Programming/calculator02buggy.cpp(请注意,此代码包含一些 故意 reader 旨在在练习中解决的错误。)
我希望这对其他对成员初始值设定项列表感到困惑的人有用。这本书到目前为止对我很有用,我打算继续通读它。