C++语言笔试题目 所有的运算符都能重载吗&不用if结构,找出两个变量之间的最大值等

来源:互联网 发布:温岭淘宝培训 编辑:程序博客网 时间:2024/04/29 16:00

所有的运算符都能重载吗

不能被重载的运算符
在 C++运算符集合中,有一些运算符是不允许被重载的。这种限制是出于安全方面的考虑,可防止错误和混乱。 (1)不能改变 C++内部数据类型(如 int,float 等)的运算符。 (2)不能重载‘.’,因为‘.’在类中对任何成员都有意义,已经成为标准用法。 (3)不能重载目前 C++运算符集合中没有的符号,如#,@,$等。原因有两点,一是难以理解,二是难以确定优先级。
(4)对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。

There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.(不用if结构,找出两个变量之间的最大值)
( ( a + b ) + abs( a - b ) ) / 2

如何打印出当前源文件的文件名以及源文件的当前行号?
cout << FILE ;
cout<<LINE ; _
FILE_LINE是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。(c也有)

写出运行结果: {// test1 char str[] = “world”; cout << sizeof(str) << “: “; char *p = str; cout << sizeof(p) << “: “; char i = 10; cout << sizeof(i) << “: “; void *pp = malloc(10); cout << sizeof(pp) << endl; }
【标准答案】6:4:1:4

在不用第三方参数的情况下,交换两个参数的值。
【参考答案】 a = a + b; b = a – b; a = a – b;

int i = 5, b = 7; cout << (i+++b) <

0 0