【发布时间】:2013-03-25 04:43:55
【问题描述】:
class foo {
public:
friend ostream& operator << (ostream &os, const foo &f);
foo(int n) : a(n) {}
private:
vector <int> a;
};
ostream& operator << (ostream &os, const foo &f) {
for (int i = 0; i < f.a.size(); ++i)
os << f.a[i] << " ";
os << endl; // why is this line a must?
}
int main(void) {
foo f(2);
cout << f << endl;
return 0;
}
在上面的代码中,如果把标记的行去掉,就会出现段错误错误,有人能解释一下原因吗?
【问题讨论】:
-
为什么没人关心检查有问题的代码?编译器应该警告你这样的错误 - “...警告:在函数中没有返回语句返回非 void [-Wreturn-type]”见liveworkspace.org/code/2ygK20$1 } ^
标签: c++ vector operator-overloading ostream