我有一个这样的课程:
class SomeClass {
public:
QString data;
SomeClass(const QString &);
};
并在.cpp文件中:
SomeClass::SomeClass(const QString &_data) {
data = _data;
}
然后我像这样使用它:
SomeClass c("foobar");
这将调用QString(“foobar”)并将其传递给SomeClass的构造函数。但是这个QString是一个自动对象,所以它的生命周期将在构造函数之后消失。另一方面,除非修改,否则data
将不会被复制(据我所知,Qt文档)。这段代码是否可能存在终身问题,或者我错了吗?如何更好地设计?
答案 0 :(得分:5)
一切都好。当您销毁临时QString数据被修改时,将执行复制。数据修改意味着它将在任何一侧,在引用数据的字符串或包含数据的字符串中进行修改。
答案 1 :(得分:4)
您的代码没问题。事件的顺序是: