++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

コロン

leave a comment »

@melponn さんのつぶやきより。

以下のコードのバグ、どこか分かります?これ実行するとスタックオーバーフロー起こすんですけど。

class Base
{
public:
	virtual void exec(){}
};

class Derived : public Base
{
public:
	virtual void exec(){
		Base:exec();
	}
};

int main()
{
	Derived d;
	
	d.exec();
}

11行目の Base:exec() のところが問題で、正しくは Base::exec()。

goto ラベルになってるw

怖い言語だなぁ、ほんと C++ は地獄だぜ、フゥハハハーハァー

まあ、同様のコード C# でもコンパイル通っちゃうんですけどね。C# の場合は Base.exec() で . な分多少マシなのと、Base:exe() って書いちゃったら「使っていないラベルがあります」って警告くらいは出してくれますが。

Written by ufcpp

2009年11月5日 @ 14:39

カテゴリー: 未分類

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。