关于c++的判断题

来源:百度知道 编辑:UC知道 时间:2024/06/21 15:45:01
判断对错
(1)在C++中,仅可以重载现有的运算符。
(2)C++语言允许在重载运算符时改变运算符原来的功能。
(3)有些运算符是不能用友元函数重载的。
(4)构造函数不能是虚函数。
(5)重载函数和运算符都是是用静态联编实现的。因为:C++在编译时常采用“名字压延“的方法来区分重载函数。名字压延是在编译器“看”到函数后改变函数名。亦即C++把重载函数的本名和参数结合起来创造函数的新名字,在程序中每一处说明原型、定义和调用这些函数的地方,C++均用压延名字来替代。例如:
有以下两个函数原型:
int myAns(float x,int j);
int myAns(int i,char c);
并用以下语句调用它们:
exam1=myAns(15,3,15);
exam2=myAns(45,’a’);
则在编译完成之前,C++也许会将函数名改变成如下形式:
int myAnsFLTINT(float x,int j);
int myAnsINTCHAR(int I,char c);
同时C++也会在函数调用的地方改变名字,如:
exam1=myansFLTINT(15,3,15);
exam2=myAnsINTCHAR(45,’a’);
(6)程序段:
complex complex::operator +(complex c2) //重载函数实现
{
complex c;
c.real=c2.real+real;
c.imag=c2.imag+imag;
return complex(c.real,c.imag);
}
中的语句:
return complex(c.real,c.imag);
可以用语句 return c;
替换。因为在函数返回的时候,可以直接用类的构造函数来生成一个无名临时对象并返回它,而不对该对象命名。
(5)要实现动态联编,派生类中的虚函数的参数类型可以与虚函数的原型不同。

请适当说明理由

T //这是C++标准规定的,不能生成运算符。
F //不可以,比如+,不能改变其现有功能,比如
//使2+2,变成2-2;
F(?) //不是很清楚,印象里好像没有限制
T //构造函数是不能被继承的,而定义成虚函数就是
//为了派生类能继承它,并重定义之,以实现多态
T //确实是这样来实现函数重载的
T //是可以的,可以上机测试
T //当然,可以,不过不是必需的

以上答案仅供参考

c++交流群; 31016458