关于运算符重载的规则,下列说法正确的是( C. )(多选)。 A. 运算符重载可以改变运算符操作数 B.运算符重载可以改变运算符优先级 C运算符重载可以改变运算符结合性 D.运算符重载不可以改变运算符语法结构
时间: 2024-03-18 07:06:56 浏览: 237
正确的选项是 C 和 D。
C. 运算符重载可以改变运算符结合性。例如,对于双目运算符"+",默认情况下是左结合的,但是可以通过重载运算符来改变其结合性。
D. 运算符重载不可以改变运算符语法结构。例如,对于双目运算符"+",其操作数必须是两个,重载运算符时也必须保持这个语法结构,不能改变。
A 和 B 选项是错误的:
A. 运算符重载不能改变运算符操作数。例如,对于双目运算符"+",其操作数必须是两个,重载运算符时也必须保持这个操作数。
B. 运算符重载不能改变运算符优先级。运算符优先级是由语言本身定义的,重载运算符不能改变它们的优先级。
相关问题
已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;, 下列关于这个函数的叙述中,错误的是【 B 】 A. 这是运算符-的重载运算符函数 B. 这个函数所重载的运算符是一个一元运算符 C. 这是一个成员函数
答案是 B。
这个函数所重载的运算符是一个二元运算符,即减法运算符"-"。这是因为函数原型中定义了一个参数,即const修饰的Volume类型的对象,表示运算符的右操作数。因此,这个函数是一个二元运算符的重载运算符函数。
A. 这是运算符-的重载运算符函数,是正确的。
B. 这个函数所重载的运算符是一个二元运算符,不是一个一元运算符,因此这个叙述是错误的。
C. 这不是一个成员函数,因为函数原型中没有指定函数所属的类。虽然函数原型中使用了const修饰符,但是它只是表示函数不会修改对象的数据成员,而不是成员函数。这个函数可以定义为类的成员函数,也可以定义为类的友元函数。
严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0344 此运算符函数的参数太多 运算符重载 C:\Users\15898\source\repos\运算符重载\运算符重载\加号.cpp 21
根据您提供的错误信息,E0344表示运算符函数的参数过多。这个错误通常发生在您在重载运算符时定义了超过预期参数数量的函数。
请检查您在加号.cpp文件的第21行是否存在这样的问题。您需要确保运算符重载函数的参数数量与该运算符的操作数数量一致。
如果您能提供更多的代码或错误信息,我可以更具体地帮助您解决这个问题。
阅读全文