2016-07-07 2 views
1

C++ 11では、コンストラクタのデフォルトの実装、デストラクタおよびコピー/移動演算子は "= default"で指定できます。ヘッダーファイル、クラス定義の場所、またはソースファイル(cpp)に "= default"を入れる場所はどこですか?デフォルトのデストラクタであるC++ 11スタイルのgo、header、またはcppはどこにありますか?

ヘッダファイルTEST.Hで:ソースファイルTest.cppので

class Test 
{ 
public: 
    ~Test() = default; 
}; 

class Test 
{ 
public: 
    ~Test(); 
}; 

#include "Test.h" 
Test::~Test() = default; 

答えて

2

あなたは両方を行うことができます:最初のケースで

  • (ヘッダ)デストラクタが第2のケースで
  • (CPP)を定義した非利用者とみなされますが、コンパイラは、ユーザーとして定義し、それを考慮します。

ユーザー提供のデストラクタは、自明ではなく、クラス自体を必ずしも自明ではありません。

2番目のオプションが適切な理由がない限り、ヘッダーに挿入するのが通常の方法です。

3

あなたは(まあ、どこのクラス定義が配置され、ヘッダに入れなければなりませんデストラクタが宣言されている)、そうでなければ、コンパイラを含め、クラスを使っている人はこの動作について知らないでしょう。

関連する問題