Profile

書いてる人:

たけ-ちーず
紹介文:
SkypeID:take-cheeze

Link

RSS Feed

Search

Calender

Latest Article

Category

Access Counter

Online Counter

Show All Article

どうでもいい独り言。 と、少しの開発日記。
  • 11 «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • » 01
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 |
何個か解析&補足。
今日は、解析結果Wikiの方に、分かった幾つかと既知で未反映のモノも足しました。

それから、毎度毎度落ちていたのが、勘で書いていたら直りました。
原因は、コピーコンストラクタの未定義でした。
いい加減に定義したら直りました。

あくまで "いい加減" だったので、その後何度か書き直したんですが、その過程での副産物をここで紹介したいと思います。

まずは、サンプルコードです。

#include <iostream>
#include <stdlib.h>

using namespace std;

class Super
{
public:
Super() {}
virtual ~Super() {}

virtual void message() { cout << "Super" << endl; }
};

class Sub : public Super
{
public:
Sub() : Super() {}
virtual ~Sub() {}

virtual void message() { cout << "Sub" << endl; }
};

int main(void)
{
Sub& sub = *new Sub();
Super& super = *new Super(sub);

super.message();

delete &(sub);
delete &(super);

return EXIT_SUCCESS;
}



内容は、virtual関数の情報がスーパークラスのコピーコンストラクタでコピーされるかチェックしています。
結果は御自身で確かめてもらうとして、結論を述べましょう。

C++ では、コンストラクタは明示的に呼ばなければならない、ようです。
まあ、当たり前ですね。

そして、そんな終わりだけでは面白く無いので、もう一言です。
仮想コンストラクタが、欲しくなりました。

というか、実はこの一言が云いたかっただけです。
これ以上は、わたしでは広げることが出来ません。


とまあ、そんな誰でも言えることを云って、今日はこれにて終わりです。
お休みなさい。


※ 因みに、わたしはTwitter経由で仮想コンストラクタの存在を知りました。発言してくれた方、ありがとうございます。
【2010/02/08 23:32】 | RPG2k_Emu | トラックバック(0) | コメント(0) |
<<メモリリーク酷い。 | HOME | 無気力は、いけない。>>
コメント
コメントの投稿












管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://takecheeze.blog47.fc2.com/tb.php/273-c1ffe12c
この記事にトラックバックする(FC2ブログユーザー)
ホーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。