目录
判断题
1.对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。错误;
3.对单目运算符重载为友元函数时,可以说明一个形参。而重载为成员函数时,不能显式说明形参。正确
当重载为成员函数时,双目运算符仅有一个参数。对单目运算符,重载为成员函数时,不能再显式说明参数。重载为成员函数时,总时隐含了一个参数,该参数是this指针。this指针是指向调用该成员函数对象的指针。
运算符重载函数还可以为友元函数。当重载友元函数时,将没有隐含的参数this指针。这样,对双目运算符,友元函数有2个参数,对单目运算符,友元函数有一个参数。但是,有些运行符不能重载为友元函数,它们是:=,(),[]和->。
7.赋值运算符“ =”只能重载为成员函数。正确
赋值运算符重载函数只能是类的非静态的成员函数 C++规定,赋值运算符重载函数只能是类的非静态的成员函数,不能是静态成员函数,也不能是友元函数。 关于原因,有人说,赋值运算符重载函数往往要返回*this,而无论是静态成员函数还是友元函数都没有this指针。
选择
5.下列关于运算符重载的描述中,( )是正确的。
A.针对<<、>>运算符不可以采用友元函数进行重载;
B.针对<<、>>运算符既可以采用成员函数也可以采用友元函数进行重载;
C.AB说法均正确;
D.ABC均不正确
用重载运算符表示,只能通过友员来实现,如果要用成员函数,则会有cout.operator<<(const F& f),所以这是不可能的.因此只能用友员来实现,operator<<(cout,f) 而cout是ostream型的,因此有以下标准格式.注意不能加const,因为cout是要改变的,会改变里的缓冲成员.
friend ostream& operator<<( ostream& cout, constF&) //输出运算符的标准重载格式.
friend istream& operator>>(istream& is, F& f){ } //输入运算符重载标准格式
6.下列哪一项说法是不正确的?
A.运算符重载的实质是函数重载
B.运算符重载可以重载为普通函数,也可以重载为成员函数 (有的只能重载为类的成员函数);
C.运算符被多次重载时,根据实参的类型决定调用哪个运算符重载函数;
D.运算符被多次重载时,根据函数类型决定调用哪个重载函数 (函数的特征表,即参数列表)