Heim  >  Fragen und Antworten  >  Hauptteil

c++关于引用做形参不初始化和ostream类的问题

void fun(ostream &os) //可以

main中,
ostream &os //不可以,为什么?
ostream os //不可以,为什么


高洛峰高洛峰2875 Tage vor581

Antworte allen(1)Ich werde antworten

  • 三叔

    三叔2016-11-07 13:58:41

    当使用pass-by-value进行函数调用时会对参数进行拷贝初始化,而C++系统由于避免IO资源冲突或内存泄露问题从而规定了IO对象无法进行拷贝。

    在STL中iostream的拷贝构造函数被设置为delete(C++11),旧版本中将其拷贝构造函数和拷贝赋值操作符声明为private且无定义来阻止拷贝。(此处可参见《Effective C++》条款06)

    所以将iostream作为参数进行传递时需使用pass-by-reference而非pass-by-value。


    Antwort
    0
  • StornierenAntwort