豚吐露@wiki

スコープが違うと同じ変数名で宣言できる

最終更新:

ohden

- view
管理者のみ編集可

スコープが違うと同じ変数名で宣言できる

環境
VisualC++ 2005


変数宣言とスコープのバグ?
スコープが異なると同じ名前で宣言できるらしい。

e.g.)CStringの例
  1. CString temp = _T("test");
  2. _tprintf(_T("%s\n"), temp);
  3. {
  4. _tprintf(_T(" %s\n"), temp);
  5. CString temp = _T("hoge");
  6. _tprintf(_T(" %s\n"), temp);
  7. }
  8. _tprintf(_T("%s\n"), temp);
  9.  

実行結果
test
  test
  hoge
test

e.g.)intの例
  1. int i = 10;
  2. _tprintf(_T("%d\n"), i);
  3. {
  4. _tprintf(_T(" %d\n"), i);
  5. int i = 15;
  6. _tprintf(_T(" %d\n"), i);
  7. }
  8. _tprintf(_T("%d\n"), i);
  9.  

実行結果
10
  10
  15
10

他の言語なら多重定義のコンパイルエラー出してくれると思うが...C++って言語仕様でこういう書き方認めてるの?(´・ω・`)



更新日: 2011年08月04日 (木) 15時27分42秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー