首页 > 解决方案 > 关于不初始化参考的非常简单的问题

问题描述

class Token_stream {
public:
    Token get();                // get a Token
    void putback(Token t);      // put a token back
    void ignore(char c);        // discard characters up to and including a c
    Token_stream(istream& ii) : is{ii} { }
private:
    bool full { false };        // is there a Token in the buffer?
    Token buffer {'0'};         // here is where putback() stores a Token
    istream& is;
};

is一个参考,但是当它被创建时它并没有真正参考任何东西吗?那为什么会这样呢?是因为构造函数is引用了ii吗?

标签: c++constructorreferenceinitialization

解决方案


引用是在其 mem-initializer 列表中的构造函数中创建的

Token_stream(istream& ii) : is{ii} { }
                            ^^^^^^

在类定义中引用的声明

istream& is;

存在编译器将知道名称的类型is并为类的对象保留足够的内存。


推荐阅读