struct hoge
{
int i,j,k;
hoge(){}
hoge(int _i, int _j, int _k){
i = _i;j = _j;k = _k;
}
};

void func()
{
int a,b,c;
hoge* ph = 0;
〜略
for(〜){
ph[〜] = hoge(a,b,c);
}
}

上のようなプログラムを見たのですが、
構造体をnewもせずに突然hoge(a,b,c)とか書いていいのですか?
特にエラーも出ずにコンパイルできました。
これはどういうことでしょうか?