Cpp クラス thisポインタのソースを表示
新しいページはコチラ
移動:
案内
,
検索
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス thisポインタ</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> </tr> </table> ※このページでは[[C PlusPlus|C++]]にのみ存在する機能として、記事タイトルが<nowiki>C++ クラス thisポインタ</nowiki>になっています。<br /> <br /> == '''クラス thisポインタ''' == thisポインタとは、自分自身を指し示すポインタだと言われており、初心者が聴くとなんとなくワケがわからない教えられ方をあちらこちらでされているように見受けます。自分自身?それって何だ? その前に、thisというキーワードのポインタ変数が定義したクラスの中で、クラスを作成しただけで使える状態になっているということについては理解しなければならないです。そして、そのthisという名前のポインタ変数が何を示しているか? '''自分自身''' ポインタについての説明は[[C ポインタ]]に記述したので、あまり多くは語りません。ポインタについてイマイチまだわかっていないかもしれない。自分にはまだはやかったかもしれないと思った場合は読み返すか、他のサイトで調べるとかが必要になります。 thisっていう名前のポインタ変数が使えるようになっていることは、理解するというか、そういう仕様なんだから納得するしかないとして、自分自身っていう言われ方をするポインタ変数というのがどういうものなのかを示しておきたいと思います。 例えば、わかりやすい例で示せば、以下のような感じのプログラムを動かすことで自分自身という表現の意味を理解できるやもしれません。 ThisPointer001.h <syntaxhighlight lang="cpp" line start="1"> #pragma once class CThisPointer001 { public: CThisPointer001(void); ~CThisPointer001(void); }; </syntaxhighlight> ThisPointer001.cpp <syntaxhighlight lang="cpp" line start="1"> #include "stdafx.h" #include "ThisPointer001.h" CThisPointer001::CThisPointer001(void) { printf("this Address =%08x\n",this);//★1.thisポインタのアドレス出力 } CThisPointer001::~CThisPointer001(void) { } </syntaxhighlight> Sample_Main.cpp <syntaxhighlight lang="cpp" line start="1"> #include "stdafx.h" #include "ThisPointer001.h" int _tmain(int argc, _TCHAR* argv[]) { CThisPointer001* CThisPointer001_Instance = new CThisPointer001; printf("CThisPointer001_Instance Address=%08x\n",CThisPointer001_Instance);//★2.変数のアドレス出力 return 0; } </syntaxhighlight> またしても、サンプルが長くなってしまいましたが、辛抱強く試してみた人がいたとしたら、実行結果は以下のようになったでしょう。 出力結果 <syntaxhighlight lang="text"> this Address =00579108 CThisPointer001_Instance Address=00579108 </syntaxhighlight> ★1.と★2.でthisポインタの出力と生成したクラスオブジェクトの変数のアドレスが一致しました。これが自分自身ということの意味になります。だから?何ができるのか? 例えば、thisポインタを使って、メンバ関数やメンバ変数を呼び出すことができます。でも、thisポインタを使わなくても呼び出せていました。そしたらthisポインタってのは何の役に立つのか?それはですね。自分自身の中の何かのメンバ変数やメンバ関数であることを明示しなければならない場合があるということにつきます。たとえば[[Cpp クラス メンバ関数ポインタ|メンバ関数ポインタ]]で明示しなければならないパターンを示しました。 自動的に作られるthisというキーワードのポインタ変数は、意図的にthisポインタと同じものを作ることができます。
テンプレート:記事名の制約
(
ソースを閲覧
)
Cpp クラス thisポインタ
に戻る。
個人用ツール
18.191.11.237
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ