c++ - 关于不初始化参考的非常简单的问题
问题描述
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
吗?
解决方案
引用是在其 mem-initializer 列表中的构造函数中创建的
Token_stream(istream& ii) : is{ii} { }
^^^^^^
在类定义中引用的声明
istream& is;
存在编译器将知道名称的类型is
并为类的对象保留足够的内存。
推荐阅读
- html - 尝试在报告名称旁边直接显示一个图标
- algorithm - 包含双连通图中所有顶点的路径
- c# - 从 Controller 中访问视图组件的属性
- azure - 如何判断哪些资源用于托管我的 Web 应用程序
- python - 使用 df2gspread 上传 pandas DataFrame 时,如何防止将我的索引上传到 Google 表格?
- android - 在 Android 应用程序中使用 WebRTC 进行视频流
- amazon-web-services - 是否有选项将 http 流量重定向到 aws 网络负载均衡器中的 https
- python - 将 textblob 应用于数据框系列的问题
- python - 将图像数据发送到 NEAT 中的神经网络,但我需要保留颜色?
- ios - iPhone 11 Simulator 中的主页视图背景颜色未全屏显示