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

本文探讨了C++中不可重载的运算符及其原因,并介绍了如何不使用条件语句来找出两个整数中的较大者,同时给出了获取当前源文件名及行号的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所有的运算符都能重载吗

不能被重载的运算符
在 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) <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值