iostream
と他のストリームクラスは実際にはクラスではなくtypedef
、 s ですよね?
ここに問題がありistream
ます。初期化リストでオブジェクトを初期化しようとしましたが、残念ながらエラーが発生しました。コードは次のようになります。
class A
{
public:
A(istream &is=cin): ais(is)
{}
private:
istream ais;
};
g++ でコンパイルできません。エラー:
synthesized method ‘std::basic_istream<char, std::char_traits<char> >::basic_istream(const std::basic_istream<char, std::char_traits<char> >&)’ first required here
SOを検索したところ、iostream cannot be assigned or copy
. しかし、なぜ初期化リストで初期化できないのでしょうか?
私が思うに、初期化リストはオブジェクトのコンストラクター/コピーコンストラクターを呼び出しますよね?