Я хотел знать, какая разница между этими двумя. Я ожидал, что оба они имеют такое же поведение, как заявление AПередача константы постоянной - * (new foo()) и foo() при передаче в качестве аргумента
void myfunctReference(foo& f)
{
std::cout << "Function called";
}
Здесь находятся звонящие
утверждения А:
myfunctReference(foo()); //Fail - OK Agreed. Because a temp is being sent as a parameter to a function who parameter is not constant. temporaries can only bind to constant references
оператор B:
myfunctReference(*(new foo())); //Allowed - Why ? isnt *(new foo()) a temp ?
'new foo()' возвращает временный указатель, который указывает на lvalue, обозначающий объект. – 0x499602D2
новый выделяет память для объекта, и если вы не удалите его, он будет течь. Так что нет, это не временное, но вы не должны этого делать. – Dave
Я знаю, что не должен был этого делать, я просто спрашиваю из любопытства –