|
1
114
这种临时对象的析构函数在完整表达式的末尾被调用。这是最外在的表达,不是任何其他表达的一部分。这是在函数返回并计算值之后。所以,一切都会好起来的。
因为每一个暂时的都会持续到表达
已完全评估。它在
|
|
2
18
请注意,C++0x只改变了一点点,因为它添加了右值引用和移动语义。本质上,通过使用右值引用参数(用&表示),我可以将右值“移动”到函数中(而不是复制它),并且右值的生存期可以绑定到它移动到的对象,而不是表达式。有一个非常好的 blog post from the MSVC team on that walks through this in great detail 我鼓励人们阅读它。 移动右值的教学示例是临时字符串,我将在构造函数中显示赋值。如果我有一个包含字符串成员变量的MyType类,它可以在构造函数中用右值初始化,如下所示:
这很好,因为当我用临时对象声明这个类的实例时:
实际情况是,我们避免复制和销毁临时对象,并且“hello”直接放置在所属类实例的成员变量中。如果对象的权重比“字符串”重,那么额外的复制和析构函数调用可能会很重要。 |
|
|
3
4
在GetString调用返回后。 |
|
4
4
我写了几乎完全相同的类:
在标准之前,每个编译器都有不同的做法。我相信旧的《C++注释参考手册》规定,临时文件应在作用域结束时清理,所以一些编译器这样做了。直到2003年,我才发现Sun的Forte C++编译器默认情况下仍然存在这种行为,因此StringBuffer不起作用。但如果任何当前的编译器仍然如此损坏,我会感到惊讶。 |
|
|
5
3
StringBuffer在GetString的作用域内。它应该在GetString作用域结束时(即返回时)被销毁。此外,我不相信C++会保证变量只要有引用就存在。 应编制以下内容:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |