通过上述结果能够知道:因为操作符重载函数“operator==”是person类的一个成员函数,所以对象p1、p2都可以调用该函数。其中的 if (p1 == p2) 语句,相当于对象p1调用函数“operator==”,把对象p2作为一个参数传递给该函数,从而实现了两个对象的比较。 1.3.2 操作符重载实现为非类的成员函数(即全局函数) 对于全局...
①用非类A类型的值为类A的对象赋值时(当然,从Ⅵ中可以看出,这种情况下我们可以不提供相应的赋值运算符重载函数而只提供相应的构造函数来完成任务)。 ②当用类A类型的值为类A的对象赋值且类A的成员变量中含有指针时,为避免浅拷贝(关于浅拷贝和深拷贝,下面会讲到),必须显式提供赋值运算符重载函数(如例1)。 Ⅷ...
试题来源: 解析 C 正确答案:C 解析:本题考核运算符重载。 +和*都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中.当作为非成员函数重载时有两个参数。反馈 收藏 ...
用友元函数来实现“--”运算符的重载时,前置“--”运算符的重载的一般格式为:friend<type>operator--(ClassName&);后置++运算符的重载的一般格式为:friend<type>operator--(ClassName&,int)。所以答案为D。结果一 题目 将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是 A.Decr& ...
[解析] 类的赋值运算符“=”只能被重载为成员函数,不能重载为友元函数。结果一 题目 下列是重载为非成员函数的运算符函数原型,其中错误的是( )。 A.Fraction operator+(Fraction,Fraction);B.Fraction operator-(Praction);C.Fraction& operator=(Fraction&,Fraction);D.Fraction& operator+=(Fraction&,Fraction)...
在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员的函数重载的运算符。下列叙述中正确的是 A. operator+有两个参数,operator*有两个参数
[解析] 把“--”运算符重载为非成员(友元)函数格式:“friend<返回类型>operator--()”是前缀的格式;friend<返回类型>operator--(int)是后缀的格式。当然也可以有参数如题中C选项所示。结果一 题目 将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是( )。 A.Decr&operator--int;B.De...
解析 D 正确答案:D 解析:本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以D选项错误。结果一 题目 下面是重载为非成员函数的运算符函数原型,其中错误的是 A. MyClassoperator*(MyClass); B. MyClassoperator+(MyClass,int); C. MyClass&operator-=(MyClass&,MyClass); D. MyClass&...
friend Decr operator——(Decr&,int); 相关知识点: 试题来源: 解析 C 正确答案:C 解析:因为要作为非成员函数重载,所以加friend,作为前缀操作,其返回的操作结果是对该变量的引用,所以类型为Decr&,操作数出现在参数表中,应声明为引用,即Decr&。 知识模块:运算符重载反馈 收藏 ...
将运算符“+”重载为非成员函数,下列原型声明中,错误的是( )。 A.MyClock operator+(MyClock,long);