c++运算符的载习题答案.docVIP

  • 55
  • 0
  • 约1.05万字
  • 约 6页
  • 2017-03-06 发布于广东
  • 举报
c运算符的载习题答案

1.概念填空题 1.1运算符重载是对已有的运算符赋予 多重 含义,使同一个运算符在作用于 不同类型 对象时导致不同的行为。运算符重载的实质是 函数重载 ,是类的 多态性 特征。 1.2可以定义一种特殊的类型转换函数,将类的对象转换成基本数据类型的数据。但是这种类型转换函数只能定义为一个类的 成员 函数而不能定义为类的友元函数。类类型转换函数既没有 参数 ,也不显式给出 返回类型 。类类型函数中必须有 return 表达式 的语句返回函数值。一个类可以定义 多个 类类型转换函数。 1.3运算符重载时其函数名由 operator运算符 构成。成员函数重载双目运算符时,左操作数是 对象 ,右操作数是 函数参数 。 2.简答题 2.2简述运算符重载的规则。 2.2简述重载单目运算符++、--,前置和后置时的差别。 2.3 C++中重运算符是否都可以重载?是否都可以重载成类的成员函数?是否都可以重载成类的友元函数? 2.4 构造函数作为类型转换函数的条件是什么。 3.选择题 3.1在下列运算符中,不能重载的是 B A.! B. sizeof C. new D. delete 3.2 不能用友员函数重载的是 A 。 A. B. C. D.++ 3.3下列函数中,不能重载运算符的函数是 B 。 A.成员函数 B.构造函数 C.普通函数 D.友员函数 3.4如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B)。 A.operator* i.operator++ ,k B.operator* operator++ i ,k C.i.operator++ .operator* k D.k.operator* operator++ i 3.5已知在一个类体中包含如下函数原型:VOLUME operator- VOLUME const;下列关于这个函数的叙述中,错误的是(B )。 A.这是运算符-的重载运算符函数 B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数 D.这个函数不改变数据成员的值 3.6在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是(C )。 A.operator+有两个参数,operator*有两个参数 B.operator+有两个参数,operator*有一个参数 C.operator+有一个参数,operator*有两个参数 D.operator+有一个参数,operator*有一个参数 4.写出下列程序运行结果 4.1#include #using namesoace std; class T public: T a 0; b 0; c 0; T int i,int j,int k a i; b j;c k; void get int i,int j,int k i a; j b; k c; T operator * T obj ; private: int a,b,c; ; T T::operator * T obj T tempobj; tempobj.a a * obj.a; tempobj.b b * obj.b; tempobj.c c * obj.c; return tempobj; int main T obj1 1,2,3 ,obj2 5,5,5 ,obj3; int a,b,c; obj3 obj1 * obj2; obj3.get a, b, c ; cout ” obj1 * obj2 :\t” ”a ” a ’\t’ “b ” b \t ”c ” c ’\t’ endl; obj2 * obj3 .get a, b, c ; cout “ obj2*obj3 :\t” “a ” a \t ”b ” b ’\t’ “c ” c \t’ endl; obj1*obj2 : a 5 b 10 c 15 obj2*obj3 : a 25 b 50 c 75 5.编程题 5.1将第4章练习5.7的分数类Fraction的算术运算改写成运算符重载函数,使分数类能实现通常的分数+、-、*、/等运算。 #include using namespace std; class Fraction int numerator,denominator; int common_divisor ; //计算最大公约数 void contracted ; //分数化简 public: Fraction int 0,int 1 ; Fraction

文档评论(0)

1亿VIP精品文档

相关文档