これがコンパイルされない理由を説明できますか:
(これはエラーです:
../Man.cpp:33:9: error: conversion from ‘Man (*)()’ to non-scalar type ‘Man’ requested)
コード:
Man goo(){
Man m();
return m;
}
しかし、これは:
Man goo(){
return Man();
}
これがコンパイルされない理由を説明できますか:
(これはエラーです:
../Man.cpp:33:9: error: conversion from ‘Man (*)()’ to non-scalar type ‘Man’ requested)
コード:
Man goo(){
Man m();
return m;
}
しかし、これは:
Man goo(){
return Man();
}
Man m();
これは、「プログラムのどこか別の場所で、m
引数を取らずに返すMan
」という名前の関数を定義することを意味します。はい、別の関数内に記述した場合でも。
Man m;
これは、"m
は型 " の変数であることを意味しますMan
。はクラス型であるためMan
、デフォルトのコンストラクターが呼び出され、括弧は必要ありません。
最初の例では、これらの括弧は必要ありません。
Man goo(){
Man m;
return m;
}
最初のケースでは () は必要ありません。デフォルトのコンストラクターは暗黙的に呼び出されます。
Man goo(){
Man m;
return m;
}
2 番目のケースでは、コンストラクターを呼び出しています。