2

これがコンパイルされない理由を説明できますか:

(これはエラーです:

../Man.cpp:33:9: error: conversion from ‘Man (*)()’ to non-scalar type ‘Man’ requested)

コード:

Man goo(){
  Man m();
  return m;
}

しかし、これは:

Man goo(){
    return Man();
}
4

3 に答える 3

4
Man m();

これは、「プログラムのどこか別の場所で、m引数を取らずに返すMan」という名前の関数を定義することを意味します。はい、別の関数内に記述した場合でも。

Man m;

これは、"mは型 " の変数であることを意味しますMan。はクラス型であるためMan、デフォルトのコンストラクターが呼び出され、括弧は必要ありません。

于 2012-03-17T23:02:43.150 に答える
3

最初の例では、これらの括弧は必要ありません。

Man goo(){
  Man m;
  return m;
}
于 2012-03-17T22:52:52.117 に答える
2

最初のケースでは () は必要ありません。デフォルトのコンストラクターは暗黙的に呼び出されます。

Man goo(){
    Man m;
    return m; 
}

2 番目のケースでは、コンストラクターを呼び出しています。

于 2012-03-17T22:52:29.580 に答える