Garmaine Staff asked 1 year ago

I'm currently having trouble with part of Chapter 6 of "Programming: Principles and Practice Using C++" (2nd ed, 3rd printing).

According to the book's index, an example of a member initializer list is on page 184.

Part of page 184 reads as follows:

Here, we'll just provide two member functions to give us a more convenient way of initializing Tokens:

class Token {
public: 
char kind; // what kind of token
double value; // for numbers: a value
};

We can now initialize ("construct") Token objects. For example:

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

Is one of these sets of code an example of a member initializer list as the index would indicate? I'm somewhat confused because, based on another Stackoverflow answer (What is this weird colon-member (" : ") syntax in the constructor? ), I thought a member initializer list would look something more like:

Name_value(string n, int v)
                :name(n), value(v) { }

(found within the following code by Chrinkus on 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) { }
};

I think it's far more likely that I'm mistaken than that there is a typo on the book, but nonetheless, I'm finding this part of the book confusing. I appreciate any feedback you may be able to offer.