assignment-operator相关内容

我应该为赋值运算符使用左值引用限定符吗?

最近,我关注了有关 C++ 中表达式赋值的讨论,如下例所示: 字符串s1、s2、s3;(s1 + s2) = s3; 使用 C++11 可以将赋值运算符限制为左值引用(在左侧).如下声明赋值运算符时,由于类型不兼容,编译器 Clang 会拒绝代码并显示错误消息. auto operator=(const string& rhs) &->字符串&;自动操作符=(string&& rhs) &- ..
发布时间:2021-11-30 12:34:57 C/C++开发

为什么将地图的元素设置为其大小会增加*之前*分配它的大小?

这是我用来索引令牌的常用模式:检查令牌是否在地图中,如果没有,则将其添加到地图中,并分配地图的大小. 在 C++ 中执行此操作时,它意外地增加了地图的大小 进行分配之前: #include #include 使用命名空间标准;int main() {映射米;printf("添加前的大小:%d\n", m.size());m['A'] = m.size();printf("添加后的大小:%d ..
发布时间:2021-11-30 12:34:40 C/C++开发

Python赋值运算符与非赋值不同

我遇到过这种奇怪的行为,我找不到解释. MWE: l = [1]l += {'a': 2}升[1, '一个']l + {'B': 3}回溯(最近一次调用最后一次):文件“",第 1 行,在 中类型错误:只能将列表(不是“dict")连接到列表 基本上,当我 += python 不会引发错误并将键附加到列表时,而当我只计算 + 我得到预期的 类型错误. ..
发布时间:2021-11-30 12:34:32 Python

C/C++ 中的链式赋值是未定义行为吗?

忽略变量的类型,像 a=b=c 这样的表达式在 C 和 C++ 中都定义了行为吗? 如果是这样,请谁能给我官方证据,比如引用标准? 附言我搜索了链式分配,但我得到的一切都是关联性,但我在 C99 标准中没有找到任何关于它的文本.也许我做错了?希望任何人都可以帮助我. 解决方案 来自 C++ 标准 5.17 赋值和复合赋值运算符 [expr.ass] 1 赋值运算符 (=) ..
发布时间:2021-11-30 12:34:25 C/C++开发

如何比较字符?

我正在学习 c.我有个问题.为什么我的程序不起作用? #include#include#include字符命令;无效的执行(){如果(cmd ==“e"){printf("%c", cmd);//退出(0);}别的{printf("非法参数");}}无效输入(){scanf("%c", &cmd);执行();}int main(){输入();返回0;} 我插入了一个“e",但它表示非法参数. ..
发布时间:2021-11-30 12:34:13 其他开发

Python:产量和产量分配

这段涉及赋值和yield运算符的代码是如何工作的?结果相当令人困惑. def test1(x):对于 x 中的 i:_ = 收益 i屈服 _def test2(x):对于 x 中的 i:_ = 收益 ir1 = test1([1,2,3])r2 = test2([1,2,3])打印列表(r1)打印列表(r2) 输出: [1, None, 2, None, 3, None][1, 2, 3] ..
发布时间:2021-11-30 12:34:06 Python

在 C++ 中编写复制构造函数和赋值运算符的清单

请写出C++中复制构造函数和赋值运算符需要做的任务列表,以保持异常安全,避免内存泄漏等. 解决方案 首先确定你真的需要支持复制.大多数时候情况并非如此,因此禁用两者是可行的方法. 有时,您仍然需要在来自多态层次结构的类上提供复制,在这种情况下:禁用赋值运算符,编写(受保护的?)复制构造函数,并提供虚拟 clone() 函数. > 否则,如果您正在编写一个值类,您将回到 Copli ..
发布时间:2021-11-30 12:33:56 C/C++开发

C++ 链表赋值运算符

尝试为单个链表类构建赋值运算符.我以为我正确构建了它,但仍然出现内存泄漏. 该类由一个 First 和 Last 变量组成.然后是一个 Node 结构. 节点结构如下所示: 结构节点{类型值;节点 * 下一个;节点 * 最后;}; 我的赋值运算符看起来像这样,它仍然存在内存泄漏 queue&queue::operator=(const queue &rhs){如果(这 == &r ..
发布时间:2021-11-30 12:33:48 C/C++开发

派生类继承基类赋值运算符?

在我看来,派生类没有继承基类赋值运算符 如果派生类继承了基类赋值操作符,请你解释一下下面的例子 在下面的代码中,我覆盖了派生类中的基类 operator=,以便派生类默认赋值运算符调用重载的 operator= #include 使用命名空间标准;班级基地{民众:基数(int lx = 0):x(lx){}虚拟基地&operator=( const Base &rhs){cout ..
发布时间:2021-11-30 12:33:41 C/C++开发

简写赋值运算符,+=,真正的含义?

我了解到i+=2 是i=i+2 的简写.但现在我对此表示怀疑.对于下面的代码,上面的知识没有用: byte b=0;b=b+2;//错误:必需字节,找到整数 上面的代码是有道理的,因为2是int类型,表达式返回int值. 但是,以下代码运行良好: byte b=0;b+=2;//b 在 += 操作后存储 2 这迫使我怀疑 += 简写运算符比我所知道的更多.请赐教. ..
发布时间:2021-11-30 12:33:34 Java开发

printf() 中赋值运算符的问题

这是代码 int main(){整数 x=15;printf("%d %d %d %d",x=1,x10);返回0;} 输出为1 1 1 1 我期待 1 1 15 1 作为输出, x*1 等于 15 但这里 x*1 是 1 ,为什么?在 printf() 中使用赋值运算符或修改值会导致 未定义行为? 解决方案 您的代码产生未定义的行为.函数参数评估彼此之间没有顺序.这意味着 ..
发布时间:2021-11-30 12:33:27 其他开发

在 Fortran 重载赋值中检查自赋值

我正在尝试使用 fortran 2003 实现一个多项式类,其中包含重载的算术运算和赋值.派生类型维护术语定义和系数的可分配列表,如下所示 类型多项式私人的类型(单项式)、维度(:)、可分配的 :: 项双精度,维度(:),可分配的 :: coef整数 :: nterms=0包含...结束类型多项式接口分配(=)模块过程:: polynomial_assignment终端接口...包含基本子程序 ..
发布时间:2021-11-30 12:33:16 其他开发

带下标运算符的重载赋值运算符

我重载了下标运算符和赋值运算符,我正在尝试为赋值运算符获取正确的值例子数组 x;x[0]=5;通过重载下标运算符,我可以获得值 0,但是当我重载赋值运算符时,它会进行赋值,但它不使用我的重载函数,因为变量 2 应该具有值 5. 类数组{民众:int *ptr;一、二;数组(int arr[]){ptr=arr;}int &operator[](int 索引){一个=索引;返回 ptr[索引];} ..

存在引用的赋值运算符和复制构造函数

我只是在尝试使用此代码的引用: A 类{};B级{民众:B(A& a):m_a(a){}A&嘛;};int main(){一个;乙乙(一);B b1 = b;} 我预计 B b1 = b; 都会产生错误.相反,当我使用 VS2008 进行编译时,我只会收到警告 警告 C4512:'B':赋值无法生成运算符 我明白为什么我会收到这个警告.但是编译器不应该也为 B b1 = b; 语句 ..
发布时间:2021-11-30 12:32:58 C/C++开发

编译器生成的构造函数

这只是一个快速的问题,可以正确理解当您使用这样的构造函数创建类时会发生什么: A 类{民众:一种() {}}; 我知道没有生成默认构造函数,因为它已经定义了但是是编译器生成的复制和赋值构造函数,或者换句话说我需要声明一个私有拷贝构造函数和一个私有赋值操作符是为了防止这种情况发生? A 类{私人的://需要防止自动生成吗?A(const A&);A&运算符=(const A&);民众:一种() ..

减少 operator= 和复制构造函数之间的代码重复

我有一个需要非默认复制构造函数和赋值运算符的类(它包含指针列表).有没有什么通用的方法可以减少复制构造函数和赋值运算符之间的代码重复? 解决方案 没有“通用方法"可以编写适用于所有情况的自定义复制构造函数和赋值运算符.但是有一个成语叫做“copy-&-swap": class myclass{...民众:myclass(myclass const&);void swap(myclass ..
发布时间:2021-11-30 12:32:32 C/C++开发

为什么使用单个赋值运算符处理复制和移动赋值效率不高?

这是C++ Primer 5th Edition的练习: 练习 13.53:由于低级效率问题,HasPtr赋值运算符并不理想.解释为什么.实施一个HasPtr 的复制赋值和移动赋值运算符并进行比较在新的移动赋值运算符中执行的操作与复制和交换版本.(P.544) 文件hasptr.h: //!一个持有 std::string* 的类类 HasPtr{朋友无效交换(HasPtr&, Ha ..

有没有人发现需要声明复制赋值运算符 const 的返回参数?

复制赋值运算符具有通常的签名: my_class &运算符 = (my_class const & rhs); 下面的签名有什么实际用途吗? my_class const &运算符 = (my_class const & rhs); 您只能定义其中之一,但不能同时定义两者. 解决方案 将复制赋值的返回类型设为非常量引用的主要理由是它是标准中对“Assignable"的要求. ..
发布时间:2021-11-30 12:32:04 C/C++开发