作业13

更新时间:2024-01-04 06:00:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

HZAU-专业C++作业13(运算符重载)

判断题

1. 所有的运算符都可以重载。F

2. 在C++中,编译时的多态性是通过函数和运算符的重载实现的。T 3. 运算符重载是通过对已有的运算符重新定义操作功能来实现的,它是C++语言多态性的一种表现。 T

4. 运算符重载只可以是类的成员函数和友元函数,不可以是普通函数。T 5. 运算符重载是通过函数来实现的,定义运算符重载函数时,函数名中要使用关键字operator。 T

6. 运算符重载后,优先级、结合性和操作数都是不变的。 T 7. 重载运算符的函数也可以设置默认参数。F

8. 使用成员函数方法和使用友元函数的方法所定义的重载运算符函数的参数个数是不相同的。 T

9. 运算符“.”、“::” 、“?:” 不能重载 T

10. 运算符=、()、[]和->可作为类成员运算符, 不能作为友员运算符。T

选择题

1.

下列运算符中,(A )运算符在C++中不能重载。

A. ?: B. [ ] C. new D. && 2.

下列运算符不能用友元函数重载的是(c)。

A. + B. = C. * D. << 3.

在一个类中可以对一个操作符进行( D )重载。

A. 1种 B. 2种及以下 C. 3种及以下 D. 多种 4.

友元运算符obj1>obj2被C++编译器解释为( A )。

A. operator > (obj1, obj2) B. > (obj1, obj2)

C. obj2.operator > (obj1) D. obj1.operator > (obj2) 5.

下列关于C++运算符函数的返回类型的描述中,错误的是( C )。

A. 可以是类类型 B. 可以是int类型 C. 可以是void类型 D. 可以是float类型

6.

下列关于运算符重载的描述中,正确的是( D )。

A. 运算符重载可以改变运算符的操作数的个数 B. 运算符重载可以改变优先级 C. 运算符重载可以改变结合性 D. 运算符重载不可以改变语法结构 7.

先加一然后再使用的++运算符的重栽形式是(A )。

A. operator ++() B. operator ()++ C. operator ++() int D. operator ++() char 8.

假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为(B )。

A. AB operator+(AB & a , AB & b) B. AB operator+(AB & a) C. operator+(AB a) D. AB & operator+( ) 9.

下列关于运算符重载的叙述中,正确的是( b )。

A. 通过运算符重载,可以定义新的运算符。 B. 有的运算符只能作为非成员函数重载。

C. 若重载运算符+,则相应的运算符函数名是operator+。 D. 重载一个二元运算符时,必须声明两个形参。 10.

下列能正确重载运算符的友元函数原型是(D)。

A. friend B operator?: ( ); B. friend B operator+(int x); C. friend B operator+(B b); D. friend B operator+(B b, B a); 11.

下列叙述正确的是( b)。

class B

{ int a,b; public:

B(int aa=0, int bb=0) { a=aa; b=bb; }

B operator+ ( int x ) //A { B r;

r.a=a+x; r.b=b+x; return r; } };

void main( )

{ B x(3,5), y(8,4), z1, z2; z1=x+5;

z2=10+y; //B }

A. A行有错误 B. B行有错误 C. A行和B行都有错误 D. A行和B行都没有错误 12.

下列叙述正确的是(c )。 class B

{ int a,b; public:

B(int aa=0, int bb=0) { a=aa; b=bb; }

friend void operator++( ); //A void show( ) { cout<

friend void operator++( ) //B { ? }

A. A行有错误 B. B行有错误 C. A行和B行都有错误 D. A行和B行都没有错误

程序设计题

1. (10分)

阅读程序写结果——运算符重载

题目描述

#include using namespace std; class point {

int a,b; public:

point( int aa, int bb ) { a=aa; b=bb; } void operator +=(point &p) { a+=p.a; b+=p.b; } void show( )

{ cout<

int main( ) {

point p1(3,5), p2(8,4); p1+=p2; p1.show( ); return 0; }

输入描述

请阅读程序,并调试,查看结果以通过测试。

输出描述

输入样例

输出样例

此处省略,不代表没有测试数据。

2. (10分)

补充代码——运算符重载

题目描述

请阅读下面的程序,不修改主函数的情况下,补充完整使程序运行获得正确结果。 #include using namespace std;

static int dys[ ]={31,28,31,30,31,30,31,31,30,31,30,31}; class date {

int mo,da,yr; public:

date (int m , int d, int y){mo=m;da=d ;yr=y;} date(){}

void disp() {cout<

int main(void) {

date d1(2,10,2012),d2; d1.disp(); d2=d1+80; d2.disp(); return 0; }

输入描述

输出描述

输入样例

输出样例

2/10/2012 5/1/2012

3. (10分)

推导程序运行结果——运算符重载

题目描述

请仔细阅读以下程序,在草稿上推导出运行结果。(程序写结果题) #include using namespace std; class Point {

float x ,y; public: Point(){}

Point(float fx ,float fy) {x=fx , y=fy;}

Point operator++();//前置++与前与后都可以有空格也可以没空格 Point operator ++(int);//后置

Point&operator -- (); //&与前与后可以有空格也可以没有空格 Point operator --(int); // void display()

{cout<<\};

int main (void ) {

CRational r (5 , 8) ; double d =4.7 , e , f ;

d+=r ; //A 将CRational 类型隐式转换double 类型

e=CRational ( r) ; //B 将CRational 类型强制转换为double 类型 f= ( CRational ) r ; // 强制转换的另一种形式 //e=double ( r) ; //f= ( double ) r ;

cout<

输入描述

输出描述

输入样例

输出样例

5.325 0.625 0.625

本文来源:https://www.bwwdw.com/article/2qbx.html

Top