4

ヘッダー ファイルに抽象基本クラスと派生クラスがあります。派生クラスの外で純粋仮想関数を定義することは可能ですか?

例えば:

//file .h
class Baseclass
{
public:
    virtual int vfunc() = o;
   //assume Ctor and Dctor
};
class Derivedclass : public Baseclass
{
public:
    int vfunc();
    //assume Ctor and Dctor
};

cppファイルで:

#include <file.h>
int Derivedclass :: vfunc()
{
    // Body of the function
}

上記の方法は正しい/可能ですか?

4

3 に答える 3

3

これは可能であるだけでなく、標準的な方法です。関数定義をヘッダーに入れることについて心配しなければならないのは、テンプレートを使用するときだけです。

于 2012-10-18T16:01:30.770 に答える
1

はい、可能です。それがあなたが尋ねたいことなら、あなたのクラスの外でそれらを定義することができます。

于 2012-10-18T15:59:07.370 に答える
0

派生クラスの外で純粋仮想関数を定義することは可能ですか?

関数は派生クラスでは純粋仮想ではなく、基本クラスでのみ純粋仮想です。

派生クラスは関数をオーバーライドし、純粋な指定子 (=0関数宣言子の後のビット)を持たないため、DerivedClass::vfunc()純粋な仮想ではありません。したがって、プログラムで使用する場合はどこかに定義が必要です。ヘッダーとは別のファイルで定義するのは完全に正常です。

于 2012-10-18T16:04:58.973 に答える