【发布时间】:2014-11-10 17:48:07
【问题描述】:
我正在阅读 C++ 入门。我遇到了以下代码:
#include <iostream>
#include <string>
using namespace std;
class PrintString {
public:
PrintString(ostream &o = cout, char c = ' '): os(o), sep(c) {}
void operator() (const string &s) const { os << s << sep; }
private:
ostream &os;
char sep;
};
int main() {
const PrintString printer;
printer("ABC");
return 0;
}
这段代码有效,但我不知道为什么。以下是我的想法,如果有人能帮助指出我错在哪里,那就太好了......
这里,'printer' 是一个 const PrintString 对象,所以它的数据成员是 const,所以 'printer.os' 是对 cout 的 const 引用。因此,我们应该无法写入“printer.os”,因为写入 cout 会改变它。
提前致谢!
【问题讨论】:
标签: c++ reference constants cout