fetus Diary
2008/06/16(月) - 抽象クラス
#include <iostream>
class Base {
public:
virtual void hoge() = 0;
};
class Impl : public Base {
public:
virtual ~Impl() { }
virtual void hoge() { std::cout << "hoge" << std::endl; }
};
int main(int argc, char *argv[]) {
Base *fuga = new Impl();
fuga->hoge();
return 0;
}
$ g++ -Wall test.cpp
test.cpp:3: warning: ‘class Base’ has virtual functions but non-virtual destructor
$ ./a.out
hoge
う~ん…。
Base クラスを
class Base {
public:
virtual ~Base() = 0;
virtual void hoge() = 0;
};
Base::~Base() { } // この実装がキモい
こうすれば警告は出ないんだけど、超キモい。
# gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)
- 08/06/16 17:02
コメント
コメントはありません。