次のように、一時オブジェクトを const 参照によって関数に渡すことができることがわかっています。
class A
{
public:
A(int _b = 0)
{
b = _b;
}
int b;
};
void foo(A& a) {printf("%d", a.b);}
void cfoo(const A& a) {printf("%d", a.b);}
int main(void)
{
//foo(A(4)); doesn't compile
cfoo(A(5));
}
しかし、ポインターによる受け渡しはどうですか?なぜこれがコンパイルされるのですか?
void pfoo(A* pa) {pa->b = 19;}
int main(void)
{
pfoo(&A(5));
}