27 Temmuz 2012, Cuma
Neden bu varsayılan yapıcı değil mi?
struct X
{
X() { std::cout << "X()\n"; }
X(int) { std::cout << "X(int)\n"; }
};
const int answer = 42;
int main()
{
X(answer);
}
Yazdırmak için bu da beklerdim
X(answer);
X
int
dökme olarak yorumlanabilir çünküX(int)
yaX(answer);
değişken Deklarasyonu olarak yorumlanabilir çünkü hiç, hiçbir şey.
Ancak it prints X()
ve X(answer);
varsayılan kurucusunu çağırmak olurdu neden hiçbir fikrim yok.
BONUS PUAN: ben değiştirmek için bir değişken bildirimi bir geçici yerine almak için Ne yapardınız?
CEVAP
27 Temmuz 2012, Cuma
hiç, X(cevap) çünkü; hiçbir şey bir değişken Deklarasyonu olarak yorumlanabilir.
Cevabın burada gizli. Eğer bir değişken bildirirseniz, varsayılan decimal non-POD ve diğer şeyler () çağırır.
Senin edit: geçici bir almak İçin birkaç seçeneğiniz vardır:
(X(answer));
(X)answer;
static_cast<X>(answer)
X{answer};
(C 11)- 25* *C 11, kopya tabi olabilir ()
void(), X(answer);
X((void(),answer));
true ? X(answer) : X();
if(X(answer), false){}
for(;X(answer), false;);
X( answer);
Bunu Paylaş:
Neden varsayılan parametresiz yapıcı p...
Neden varsayılan olarak't işaretç...
Neden yeni bir anahtar gerekiyor ve ne...
Neden't Java kopya yapıcı değil m...
Neden yapıcı şablon parametre anlaması...