assignment-operator相关内容
为什么人们定义了一个私有拷贝构造函数? 何时使拷贝构造函数和赋值运算符成为一个好的设计? 如果类中没有成员作为唯一对象(例如文件名)的指针或句柄,那么wat其他情况下有私人复制构造函数是个好主意吗? 同样的问题适用于赋值运算符。考虑到大多数C ++围绕着对象的复制和通过引用传递,有没有任何好的设计涉及到私有副本构造函数? 解决方案 某些对象表示不能或不应该复制的特定实体。
..
我正在阅读有关“规则五”的不错答案,我注意到了我不记得以前看过了: class C { ... C& operator =(const C&)& =默认; C& operator =(C&& amp;)& =默认; ... }; & 字符放置在 = default 前面的复制赋值操作符和移动赋值操作符? 解决方案 这是一个允许C ++ 11非静
..
这是“C ++ Gotchas”一书第56项的摘录: 这是一个很简单的 初始化一个Y对象,用 三种不同的方式写,如同 它们是等价的。 Y a(1066); Y b = Y(1066); Y c = 1066; 事实上,这三个 初始化可能会导致 在同一目标代码中生成 ,但它们不是等价的。 a的初始化称为 直接初始化,它正确的是 。 初始化通
..
根据我的理解,当重载operator =时,返回值应该是非常量引用。 A&A :: operator =(const A&) { //检查自我分配,执行分配 return * this; } 这是非常量允许非const成员函数被调用例如: (a = b).f 但是为什么要返回一个引用呢?如果返回值没有声明为引用,那么在什么情况
..
我正在阅读一本关于C ++的书,更确切地说是关于运算符重载。 示例如下: const Array& Array :: operator =(const Array& right) { //检查自赋值 如果不是自己分配的复制 return * this; // enables x = y = z } const ref而不是ref是为了避免诸如(x = y)
..
我正在做一些修改我的C + +,我处理的运算符重载在分钟,特别是“=”(赋值)运算符。我在网上看过,讨论了多个主题。在我自己的笔记中,我把所有的例子都删掉了 class Foo { public: int x; int y; void operator =(const Foo&); }; void Foo :: operator =(const Foo& rhs)
..
如果我覆盖operator =将复制构造函数自动使用新的运算符?类似地,如果我定义一个复制构造函数,将操作符=从复制构造函数自动“继承”行为。 解决方案他们是不同的运营商。 复制构造函数用于创建一个新对象。它将现有对象复制到新构造的对象。复制构造函数用于从旧的 实例初始化新实例。当将变量按值传递给函数 或作为函数中的返回值时,不一定会调用它。 赋值运算符用于处理已经存在的对象
..
赋值运算符可以使用成员函数而不是非成员函数重载: class Test { int a; public: Test(int x) :a(x) {} friend Test& operator =(Test& obj1,Test& obj2); }; 测试& operator =(Test& obj1,Test& obj2)//未完全实现。只是为了测试。 {
..
我已经看到它说一个 operator = 被写为采用相同类型的值的参数同时作为复制赋值操作符和移动赋值操作符在C + +11: Foo& operator =(Foo f) { swap(f); return * this; } 其中替代项将是许多行的两倍多重复和潜在错误: Foo& operator =(const Foo& f) { Foo f
..
我有一个B类,一组构造函数和一个赋值操作符。 class B { public: B(); B(const string& s); B(const B& b){(* this)= b;}; B& operator =(const B& b); private: virtual void foo(); //和其他私有成员变量和函数 } 创建继承
..
在C ++中,从拷贝赋值运算符返回引用的概念对我来说不清楚。为什么复制赋值运算符不能返回新对象的副本?此外,如果我有A类和以下: A a1(param); A a2 = a1; A a3; a3 = a2; // operator =定义如下: / p> AA :: operator =(const A& a) { if(this ==& a
..
这个成语是什么,什么时候使用?它解决了哪些问题?当使用C ++ 11时,惯用语是否会改变? 虽然在很多地方都提到过,但我们没有任何奇怪的“什么是”问题和答案,所以这里是。以下是之前提到的地方的部分列表: 复制构造函数和= C ++中的运算符过载:是可能的常见函数吗? 什么是复制elision,以及如何优化复制和交换惯用语 C ++:动态分配对象数组 解决方案 概述 复
..
我们有相当的赋值运算符的所有逻辑运算符,移位运算,加法运算符和所有乘法运算。 为什么逻辑运算符被甩了呢? 是否有一个良好的技术原因,这是很难? 解决方案 为什么逻辑运算符被甩了呢?是否有一个良好的技术原因,这是很难? 他们没有。你可以做&安培; = 或 | = 或 ^ = 如果你想。 B1布尔= FALSE; 布尔B2 = TRUE; B1 | = B2; //意味着B1
..
我有以下的code片断: 的main() { INT K = 35; 的printf(“\\ n%D%D”,K = = 35,K = 50,K> 40); } 产生以下输出 0 50 0 我不知道我理解的的printf的的第一个值怎么来 0 。当 k值与 35 ,它应该理想地返回(从而打印)1,但如何比较它打印零?另外两个值是已交出 50 和 0 都是正确的,因为在第二个值,值k设
..
我在C中使用这样的结构: 列表 - >头=列表 - >尾= NULL; 现在我考虑这是否真正意味着什么,我想。 时这意味着什么? 列表 - >头= NULL;列表 - >尾= NULL; 或 列表 - >头=列表 - >尾;列表 - >尾= NULL; THX澄清 解决方案 这些都不是正确的。 由于简单的赋值 = 操作符是
..
考虑下面的2个节目 PROG1 和 PROG2 。在这里,如果我试图改变的值常量合格的变量 I 使用指针 PTR ,我得到的警告(不出错)“初始化丢弃了指针目标类型的限定|“,但程序仍然运行并显示新value.But如果我试图改变 i的值在使用赋值语句的第二个方案,我得到的错误(不报警)的只读变量“i”的分配| 以下是这premise引起的混乱: 1)我们为什么允许改变只读常量限定变量在任何情
..
我知道在一些语言如下: A + = B 的效率比: A = A + B ,因为它消除了对创建临时变量的需要。这是在C的情况下?它是更有效地使用+ =(因此也 - = * = 等) 解决方案 所以这里有一个明确的答案...... $猫junk1.c #包括LT&;&stdio.h中GT;诠释的main() { 长,S = 0; 用于:(a = 0;一个与所述
..
在我看来,应该有四个变量的boost ::可选的 可选<富> =>持有可变Foo和可以初始化后重新分配 可选<富常量>常量 =>持有一个const Foo和初始化后不能重新分配 可选<富>常量 =>(应该?)持有可变富,但初始化后不能重新分配 可选<富常量> =>(?应该)举办一个const Foo和可以初始化后重新分配
..
我定义在赋值运算符的多个重载如下: foo.h中 类Foo { 私人的: 布尔my_bool; INT my_int; 标准::字符串my_string; 上市: 美孚&安培;运算符=(布尔值); 美孚&安培;运算符=(int值); 美孚&安培;运算符=(常量标准::字符串&安培;值); }; Foo.cpp中 //赋值操作符。 美孚&安培
..
我想一个二维数组复制到另一个像这样: REG [11:0] input_matrix [0:array_width - 1] [0:array_height - 1]; REG [11:0] output_matrix [0:array_width - 1] [0:array_height - 1]; 总是@(posedge时钟) 开始 如果(小于某些条件>)
..