У меня есть класс, конструктор которого принимает константную ссылку на строку. Эта строка действует как имя объекта и, следовательно, необходима в течение всего времени существования экземпляра класса.
Теперь представьте, как можно использовать этот класс:
class myclass {
public:
myclass(const std::string& _name) : name(_name) {}
private:
std::string name;
};
myclass* proc() {
std::string str("hello");
myclass* instance = new myclass(str);
//...
return instance;
}
int main() {
myclass* inst = proc();
//...
delete inst;
return 0;
}
Поскольку строка в proc () создается в стеке и, следовательно, удаляется при завершении proc (),
что происходит с моей ссылкой на него внутри экземпляра класса? Я думаю, что это становится недействительным. Будет ли лучше держать копию в классе? Я просто хочу избежать ненужного копирования потенциально больших объектов, таких как строка ...