В настоящее время у меня возникают проблемы с частью главы 6 «Программирование: принципы и практика с использованием C ++» (2-е издание, 3-е издание).
Согласно индексу книги, пример инициализатора члена список находится на странице 184.
Часть страницы 184 выглядит следующим образом:
"Здесь мы просто предоставим две функции-члена, чтобы дать нам более удобный способ инициализации токенов:
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) { }
(найденный в следующем коде 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)
{}
Это инициализаторы членов, не так ли ? Интересно, хотел ли автор ссылаться на эти две функции, когда писал «Здесь мы просто предоставим две функции-члена, чтобы дать нам более удобный способ инициализации токенов:»