Mil*_*lan 2 c++ constructor reference
我有一个类,其构造函数对字符串进行const引用.此字符串充当对象的名称,因此在类的实例的整个生命周期中都需要此字符串.
现在想象一下如何使用这个类:
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;
}
Run Code Online (Sandbox Code Playgroud)
由于proc()中的字符串是在堆栈上创建的,因此在proc()完成时被删除,在类实例中引用它会发生什么?我的猜测是它变得无效.我最好在课堂上保留一份副本吗?我只是想避免任何不必要的复制像字符串这样的潜在大对象......