所有的运算符都能重载吗?
不能。
在C++运算符集合中,有一些运算符是不允许被重载的。这种限制是出于安全方面的考虑,可防止错误和混乱。⑴不能改变C++内部数据类型(如int,float等)的运算符。
⑵不能重载“.”,因为“.”在类中对任何成员都有意义,已经成为标准用法。⑶不能重载目前C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
⑷对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。
在C++运算符集合中,有一些运算符是不允许被重载的。这种限制是出于安全方面的考虑,可防止错误和混乱。⑴不能改变C++内部数据类型(如int,float等)的运算符。
⑵不能重载“.”,因为“.”在类中对任何成员都有意义,已经成为标准用法。⑶不能重载目前C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
⑷对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。
举一反三
- 什么是运算符重载?是否所有运算符都能进行重载?
- 下列关于运算符重载的描述中,正确的是( )[br][/br]· A: 所有运算符都可以重载<br>· B: 通过重载,可以使运算符应用于自定义的数据类型<br>· C: 通过重载,可以创造原来没有的运算符<br>· D: 通过重载,可以改变运算的优先级
- 下面关于运算符重载中正确的是( )。 A: 运算符函数的返回类型不能声明为基本数据类型 B: C++的所有运算符都可以重载 C: 在类型转换符函数的定义中不需要声明返回类型 D: 通过运算符重载可以定义C++中没有的运算符
- 以下关于运算符重载的叙述中,正确的是( )。? 重载二元运算符时,必须声明两个形参|有的运算,其运算符只能作为友元函数重载|通过运算符重载,可以定义新的运算符|若重载运算符‘+’,则相应的运算符函数名为
- C++支持运算符重载,所有运算符都可以重载
内容
- 0
以下关于运算符重载的叙述中,正确的是? A: 有的运算,其运算符只能作为友元函数重载 B: 通过运算符重载,可以定义新的运算符 C: 若重载运算符‘+’,则相应的运算符函数名为:+ D: 重载二元运算符时,必须声明两个形参
- 1
运算符“.”称为 运算符,运算符“ -> ”称为 运算 符
- 2
关于运算符重载,下列说法正确的是( )。 A: 通过重载,可以使运算符应用于自定义的数据类型。 B: 运算符重载可以重新定义运算符的功能 C: 所有的运算符都可以重载 D: 通过重载,可以创造原来没有的运算符 E: 通过重载,可以改变运算符的优先级
- 3
下列关于运算符重载的描述中,正确的是()。 A: 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符 B: 一元运算符号能作为成员函数重载 C: 二元运算符重载为非成员函数时,参数表中有一个参数 D: C++中可以重载所有的运算符
- 4
关于运算符重载,下列说法正确的是( )。 A: 所有的运算符都可以重载 B: 通过重载,可以使运算符应用于自定义的数据类型 C: 通过重载,可以创造原来没有的运算符 D: 通过重载,可以改变运算符的优先级