C++维基书指的是
..。在C++0x中,这样的赋值运算符称为统一赋值运算符,因为它不需要编写两个不同的赋值运算符.
对于接受其值的类类型的赋值操作符:
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
s.swap (*this); // Non-throwing swap
return *this;
}我试着搜索这个词,但似乎并没有得到广泛的使用。
它是从哪里来的?
发布于 2012-01-23 08:04:24
它似乎是指发生在正式类型系统中的统一。其思想是,如果只有通过一定的合法替代才能将r值和l值统一到同一类型(统一),那么分配就形成了良好的形式。
维基百科声称,这个想法最初是由约翰·艾伦·罗宾逊给予有意义的关注(可能还有它的名字)。
发布于 2012-01-23 07:49:42
我不知道是谁写的,但维基的书错了。“统一”这个词在c++0x“标准”中完全没有出现过一次(你真的应该使用"C++11“这个词,它是在2011年8月批准的)。
正确的术语是复制省略。来自C++0x (n3242,我在不花钱的情况下最后能得到的),12.8 Copying and moving class objects, /34节
当满足某些条件时,即使对象的复制/移动构造函数和/或析构函数有副作用,也允许实现省略类对象的复制/移动构造。 在这种情况下,实现将省略的复制/移动操作的源和目标视为引用同一对象的两种不同方式,并且该对象的销毁发生在如果不进行优化就会销毁这两个对象的晚些时候。 这种复制/移动操作,称为复制省略,允许在下列情况下(可合并以消除多个副本).
https://stackoverflow.com/questions/8968452
复制相似问题