C++において重要なクラスのオブジェクトポインタについてのメモ。
- 作業環境について
- サンプルコードは MacOS X 環境にて検証しています。一部の表記が Windows 環境でのソースと異なる部分(例えば “¥n” が “\n”)がありますが、基本動作には問題ありませんので、環境にあわせて書き換えて下さい。
INDEX
オブジェクトポインタ
ポインタとは
ある変数のメモリ上のアドレスを指す変数。
参照渡し
関数の引数にポインタを渡すこと。参照渡しをすることで関数内で直接変数の値を書き換えることが出来る。
オブジェクトポインタの使用例
[code]
#include
using namespace std;
class MyTestClass {
int a;
public:
MyTestClass(int x);
int get_int();
};
MyTestClass::MyTestClass(int x)
{
a = x;
}
int MyTestClass::get_int()
{
return a;
}
int main(int argc, const char * argv[])
{
MyTestClass obj(10);
MyTestClass *p;
p = &obj;
cout << obj.get_int() << "\n"; cout << p->get_int();
return 0;
}
[/code]
補足説明
- オブジェクトのアドレスを取得する場合はオブジェクト名の前に &演算子 を挿入する。
- オブジェクトからクラスメンバにアクセスする場合にはドット演算子を使う。
- ポインタからクラスメンバにアクセスする場合にはアロー演算子を使う。
実行結果
[code]
10
10
[/code]
まとめ
CやC++の最初の難関でもあるポインタですが、分からないうちは使用を控え、メンバ関数から引数の値渡しに慣れることが先決です。
変数の値を処理していくうちに「値を変えたいのに出来ない」「値を処理するための関数やローカル変数が無駄に多くなる」という壁が立ちはだかりますので、おそらくそれらの問題点を解決してくれるのがポインタだと思います。