一時的にオブジェクトを作って渡すとき、C++ならいちいちnewとかせずに引数の中で使い捨てできる。
#include <stdio.h> class Pos_t { public: int x; int y; }; void show(const Pos_t &A) { printf("X=%d\n",A.x); printf("Y=%d\n",A.y); } int main() { printf("初期値が無いと、中身はゴミになる\n"); Pos_t A; A.x = 123; show( A ); printf("\n初期値があると、未初期化部はゼロになる\n"); Pos_t B={.x=234}; show( B ); printf("\n引数内で使い捨てオブジェクト生成\n"); show( Pos_t{.x=345} ); return 0; }
$ ./a.out 初期値が無いと、中身はゴミになる X=123 Y=-1219967259 初期値があると、未初期化部はゼロになる X=234 Y=0 引数内で使い捨てオブジェクト生成 X=345 Y=0
構造体でもまったく同じことができるので、うまい使い道を思いつけば便利そう。
こういうのなんていうんだろう。無名オブジェクト?