LINUX.ORG.RU

Подскажите правильно ли создавать объект прямо при вызове функции в C++


0

0

Подскажите правильно ли создавать объект прямо при вызове функции в C++

void func( std::string str );

...
...
char* c; // C-string
...
func( string(c) );
...

Если я правильно понимаю в функции будет создана строва, проиницированная значением С-строки  и  после выхода из функции строка будет уничтожена( но не С-строка конечно )
Я правильно думаю или нет???
anonymous

угу
только это не слишком-то гуд, потому что объекты лучше передавать
по ссылке для минимизации расходов на копирование, а при таком способе
передача по ссылке невозможна

jek_
()
Ответ на: комментарий от jek_

Это с чего это она невозможна ? Вполне возможна,
вот только ссылка должна быть на константу.

#include <string>
#include <cstdio>

void f(const std::string& x)
{
printf ("%s\n", x.c_str());
}

int main()
{
f(std::string("hello world"));
return 0;
}

linuxsoft
()

Чувак, можно еще круче

void foo(std::string);

void bar() { char * c; foo(c);

}

И это тоже будет правильно ! Читай про конструкоры ( в т.ч. копирующие ) , а еще можно почитать про перегрузку операторов преобразования типов

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.