ポインタと参照

ポインタと参照は似て非なるもので、JavaとかからC/C++に入ると混乱するところかもしれない。

class CHoge {
public:

	CHoge(int a, int b) {
		_a = a;
		_b = b;
	}
	
	int& getA(){
		return _a;
	}
	
	int* getB(){
		return &_b;	
	}
	
private:
	int _a;
	int _b;

};

int main(int argc, char *argv[])
{
	
	CHoge* hoge = new CHoge(100,100);
	
	int& a = hoge->getA();
	a = 200;
	printf("a=[%d]", hoge->getA() );
	
	int* b = hoge->getB();
	*b = 200;
	printf("b=[%d]", *hoge->getB() );
	
	*--b = 300;
	printf("a=[%d]", hoge->getA() );
}

a=[200]b=[200]a=[300]

こう書くとわかりやすいだろうか。