8月ももう終わるなと感じる今日この頃皆さんいかがお過ごしでしょうか。
立派な人間になりたい人です。
明日使える・・・かは解らないC++の小ネタを紹介しようと思います。
知識として頭の片隅にでも置いといてもらえればと思います。(知ってたらゴメンナサイ)
今回はグローバルスコープについてやろうと思います。
※私はグローバルスコープと呼んでいますが正確な呼び方があるかもしれないです。
簡単に言うとグローバル領域にある関数等に明示的にアクセスする記述方法です。
使用する場面としてはクラス内や名前空間内のある条件が一致した時だけという限られた場面です。
「それでも私は一向に構わん!」
という方はどうぞ
[0回]
[Main.cpp]
#include <stdio.h>
class C0 {
public:
void Show(){ printf( "Test\n" ); }
private:
void printf( char* _lpStr ){}
};
int main()
{
C0 c0;
c0.Show();
return 0;
}
[EOF]
コンソールにTestと表示させるつもりで書いたが実行すると何も表示されません。
それはC0::Show関数の中のprintfはC0::printf関数を呼んでおり、
呼んで欲しい関数が違うからです。
これを治す方法の一つとしてグローバルスコープを使用する方法があります。
グローバルスコープを表すにはスコープ解決演算子(::)を使用します。
今回はグローバルにある(C0クラスではない)printf関数を呼びたいのでC0::Show関数の中を
::printf( "Test\n" );
の様に書き換えるとグローバルにあるprintfが呼ばれ、想像通りに動くようになります。
グローバルスコープについては以上です。有り難う御座いました。
PR
COMMENT
No Title
3年の先生が実施してくれる補修って来週のいつだったか分かります?