1. ホーム
  2. c++

[解決済み] C++では、コンストラクタとデストラクタはインライン関数にできますか?

2022-03-09 20:40:25

質問

VC++では、クラス宣言内で実装される関数をインライン関数としています。

クラスを宣言した場合 Foo のように、CONSTRUCTORとDESTRUCTORはインライン関数なのでしょうか?

class Foo 
{
    int* p;
public:
    Foo() { p = new char[0x00100000]; }
    ~Foo() { delete [] p; }
};

{
    Foo f;
    (f);
}

解決方法は?

コンストラクタの本体をクラスの内側で定義すると、関数をクラスの外側で "inline" キーワードを使って配置したのと同じ効果が得られます。

どちらの場合も、コンパイラーへのヒントとなる。inline"関数は、必ずしもその関数がインライン化されることを意味するわけではありません。それは、関数の複雑さや他の規則に依存します。