は、次のプログラムを考えてみましょう:コピーコンストラクタの楕円の意味は何ですか?
#include <iostream>
struct Test
{
int a;
Test() : a(3)
{ }
Test(const Test& t...)
{
std::cout<<"Copy constructor called\n";
a=t.a;
}
int get_a()
{
return a;
}
~Test()
{
std::cout<<"Destructor is called\n";
}
};
int main()
{
Test t;
Test* t1=new Test(t);
std::cout<<t.get_a()<<'\n';
std::cout<<t1->get_a()<<'\n';
delete t1;
}
は密接に私はこのプログラムをしようとしたとき、私は本当に驚いたコピーコンストラクタ のパラメータに3個のドットを観察します。それの使用は何ですか?どういう意味ですか?
言語仕様にはこれについての記載がありますか?
は、私は3つのドットが printf()
とscanf()
などともC99で導入さ可変引数マクロのように可変引数関数で可変長引数を表すために使用されていることを知っています。 C++では、私が間違っていなければ、バリデーショナルなテンプレートで使われます。
このコードは適切に構成されていますか?任意の数の引数を取ることができるこの可変コピーコンストラクタですか?
それがg ++ 4.8.1 & MSVS上&実行罰金コンパイル2010
'(カンマに注意) –
型自体の値と呼ばれ、参照することによってそれを取ることができる任意のコンストラクタは、可能なコピーコンストラクタです。任意のさらなる議論が供給され得るという事実は重要ではない。 –
@PiotrSkotnicki:だから、カンマが必要ないのはなぜですか? – Destructor