揮発性のメモ2

http://d.hatena.ne.jp/iww/

C++で引数のところでオブジェクトを作って渡す

一時的にオブジェクトを作って渡すとき、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

構造体でもまったく同じことができるので、うまい使い道を思いつけば便利そう。
こういうのなんていうんだろう。無名オブジェクト?