当前位置:首页 > C++清考资料运算符重载
一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 3题 )
1. 下列运算符中,在C++语言中不能重载的是( )。 a. * b. >= c. :: d. /
2. 下列关于运算符重载的叙述中,正确的是( )。 a. 通过运算符重载,可以定义新的运算符 b. 有的运算符只能作为成员函数重载
c. 若重载运算符+,则相应的运算符函数名是+ d. 重载一个二元运算符时,必须声明两个形参
3. 下面关于运算符重载的描述错误的是( )。
a. 运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
b. 不是所有的运算符都可以进行重载
c. 运算符重载函数的调用必须使用关键字operator d. 在C++语言中不可通过运算符重载创造出新的运算符
二、分析以下程序的执行结果 #include
Sample &Sample::operator=(Sample s) { Sample::n=s.n; return *this; }
void main() { Sample s1(10),s2; s2=s1; s2.disp();
}
三、程序设计题
设计一个点类Point,实现点对象之间的各种运算。已经给出Point类的完整声明,要求对Point类中未定义的成员函数在类外进行定义,并设计一个主函数,测试Point类,并给出主函数的输出。
Point类提供了6个运算符重载函数(参加程序中的代码和注释),以实现相应的运算。
#include
参考答案:
一、单项选择题 1-3 c b c 二、
n=10 三、
Point::Point(Point &p) { x=p.x; y=p.y; }
void Point::offset(int i,int j) { x+=i; y+=j; }
void Point::offset(Point p) { x+=p.getx(); y+=p.gety(); }
bool Point::operator==(Point p) { if(x==p.getx()&&y==p.gety()) return 1; else return 0; }
bool Point::operator!=(Point p) { if(x!=p.getx()||y!=p.gety()) return 1; else return 0; }
void Point::operator+=(Point p) { x+=p.getx(); y+=p.gety(); }
void Point::operator-=(Point p) { x-=p.getx(); y-=p.gety(); }
Point Point::operator+(Point p) { this->x+=p.x; this->y+=p.y; return *this; }
Point Point::operator-(Point p)
{ this->x-=p.x;this->y-=p.y; return *this; }
void main() { Point p1(2,3),p2(3,4),p3(p2); cout<<\ p3.offset(10,10); cout<<\ cout<<\ cout<<\ p3+=p1; cout<<\ p3-=p2; cout<<\ p3=p1+p3; // 先将p1+p3的结果放在p1中,然后赋给p3,所以p1=p3 cout<<\ p3=p1-p2; cout<<\}
本程序的执行结果如下: 1:(3,4) 2:(13,14) 3:0 4:1
5:(15,17) 6:(12,13) 7:(14,16) 8:(11,12)
一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。共 4题 )
1.下面几个运算符在C++中不能被重载的是( )。 a. != b. ||
c. sizeof d. &
共分享92篇相关文档