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)

コメント

コメントはありません。

名前
メール
コメント

※HTML タグは使えません。HTTP URL には自動リンクが張られます。

Captcha
画像から読み取れる文字を入力: