首页 > 试题广场 >

一个双目运算符作为类的成员函数重载时,重载函数的参数表中有(

[单选题]
一个双目运算符作为类的成员函数重载时,重载函数的参数表中有()个参数。
  • 1
  • 2
  • 3
  • 0
推荐
答案:A
重载为类成员函数时,类本身是该双目运算符的一个参数,所以还需要一个参数
如果重载为友元函数则需要两个参数
编辑于 2015-01-26 15:42:53 回复(1)
若为成员函数重载,参数一般为类对象的引用,另一个参数由this 指针所指向,故不显示。 若为友元函数重载,则有两个参数!
发表于 2015-07-07 10:00:44 回复(0)
又是考擦运算符重载为类成员函数和友元函数,参数个数问题
错两次了,记住啊
发表于 2016-09-23 15:26:41 回复(0)
看清题,是作为成员函数。那么有一个参数是this,所以1个。。。。若是普通函数,则是2个
发表于 2018-10-12 16:26:14 回复(0)
A
一个,重载为友元是要两个

发表于 2015-01-18 15:58:37 回复(0)
#include<iostream.h> 
class CComplex
{
public: 
    CComplex(double r = 0, double i = 0) 
    { 
        realPart = r; 
        imagePart = i;
    } 
    void print() 
    { 
        cout << "该复数实部 = " << realPart << ",虚部 = " << imagePart << endl;
    }
    CComplex operator + (CComplex &c); // 重载运算符+ 
    CComplex operator + (double r); // 重载运算符+ 
private: double realPart;  // 复数的实部 
         double imagePart; // 复数的虚部 
}; 
CComplex CComplex::operator + (CComplex &c) // 参数是CComplex引用对象,两个复数的加法
{ 
    CComplex temp; 
    temp.realPart = realPart + c.realPart; 
    temp.imagePart = imagePart + c.imagePart; 
    return temp; 
}
CComplex CComplex::operator + (double r) // 参数是double类型数据,一个复数与一个实数的加法
{ 
    CComplex temp; 
    temp.realPart = realPart + r; 
    temp.imagePart = imagePart; 
    return temp; 
} 
void main() 
{ 
    CComplex c1(12,20), c2(50,70), c;
    c = c1 + c2; 
    c.print(); 
    c = c1+ 20; 
    c.print(); 
} 
/*
运行结果为: 
该复数实部 = 62, 虚部 = 90 
该复数实部 = 32, 虚部 = 20 
对运算符“+”作了两次重载,一个用于实现两个复数的加法,另一个用于实现一个复数与一个实数的加法。
当重载一个运算符时,必须定义该运算符要完成的具体操作,而且当运算符重载函数是类的成员函数时,
该函数的形参个数要比运算符 操作数个数少一个,双目运算符重载的成员函数只有一个参数,
单目运算符重载的成员函数没有参数。
友元重载的一般格式如下:
friend <函数类型>operator <重载的运算符>(<形参>) // 单目运算符重载 
{ … } // 函数体 

friend <函数类型>operator <重载的运算符>(<形参1, 形数2>) // 双目运算符重载 
{ … } // 函数体 
对于单目运算符的友元重载函数,只有一个形参,形参类型可以是类的对象,可以是引用,这取决于不同的运算符。
对于双目运算符的友元重载函数来说,它有两个形参,这两个形参中必须有一个是类的对象。
需要说明的是,=、()、[]和->运算符不能用友元来重载。
*/

编辑于 2018-07-05 16:26:19 回复(0)
单目运算 只要一个变量就能执行的运算,如!a 双目运算 两个变量执行的运算,如a>b 三目运算 三个变量才能执行的运算,如A?x:y
发表于 2017-09-08 00:04:26 回复(0)
A 只需要一个
如果作为独立函数重载时,则有2个参数
发表于 2014-12-30 14:35:54 回复(0)
这明明是C++的题目,C语言是不涉及到类的,建议把题目认真归类
发表于 2023-08-10 18:18:03 回复(1)
双目运算符作为类的成员函数重载时,类本身是该双目运算符的一个参数,所以还需要一个参数
如果重载为友元函数则需要两个参数
发表于 2018-05-25 10:01:43 回复(0)
重载成类成员,第一个参数是本对象的this指针(暗含),写代码时只有一个参数;友元函数则有两个参数
发表于 2018-01-22 16:24:57 回复(0)
分为重载类成员函数和友元函数友元函数两种情况。
发表于 2018-01-18 03:22:39 回复(0)
是友元函数时:
eg:
friend object operator+(object &o1, object &o2);
非友元函数时:
eg
object operator+(object &o);

发表于 2018-01-17 16:08:16 回复(0)
所有成员函数都有self指针作为参数,是编译器默认后期加上去的
发表于 2017-09-22 12:39:02 回复(0)
SMn头像 SMn
重载成类成员,第一个参数是本对象的this指针(暗含),写代码时只有一个参数;友元函数则有两个参数
发表于 2017-08-17 21:32:12 回复(0)
A
发表于 2015-01-08 17:27:12 回复(0)