は、これまでのところ、私はあなたがオブジェクトである関数の引数のデフォルト値を渡したい場合、あなたはこのようにそれを行うことを知っている値:デフォルトのオブジェクトの値が
void function(MyObject obj = MyObject()){
...
}
しかし、最近、私はいくつかの興味深い構文に近づき、混乱しています。 このような関数を呼び出すとどうなりますか?
void function(MyObject obj = 0){
...
}
注:ポインタではなくオブジェクトを渡しています。上記のコードはうまくコンパイルされますが、エラーや警告はありません。そして、これは、常に1つの引数でコンストラクタを呼び出す - MyObjectには、このように定義されています
またclass MyObject{
public:
MyObject(double n){std::cout << "Argumented\n";}
MyObject(){std::cout << "Default\n";}
};
、(私が検索し、それを見つけることができなかったため)この動作はを文書化されて?
C++標準の第4章(標準変換)と第12.3章(特殊なメンバ関数/変換)。また、13.3.3.1(暗黙的な共起シーケンス)。 – jrok
@jrokありがとうございました。 –
ようこそ。章番号はn3337の草案ですが、公式(C++ 11)の標準では同じであると思います。 – jrok