【C++学习记录】特征标与重载

什么是特征标

C++特征标是指一组用于描述编译器和库的特性的宏定义。这些宏定义通常由编译器提供,并且会根据不同的编译器和版本而有所不同。

C++特征标主要用于编写跨平台代码,通过判断编译器是否支持某些特性来决定代码的行为。常见的C++特征标包括:

__cplusplus:用于判断编译器是否支持C++标准的版本,例如 __cplusplus >= 201103L 表示编译器支持 C++11 标准及以上版本。
STDC_HOSTED:用于判断编译器是否运行于操作系统环境中。
STDC: 用于判断编译器是否符合 C 标准,例如 STDC == 1 表示编译器符合 C 标准。
GNUC:用于判断编译器是否为 GCC。
_MSC_VER:用于判断编译器是否为 Visual Studio。
__has_include:用于判断是否包含某个文件。
在编写跨平台代码时,使用特征标可以使代码更加可移植,避免因为编译器或操作系统的差异而导致的问题。

重载与特征标

重载时返回值可以不同,但特征标必须不同。
在 C++ 中,函数重载允许我们在同一个作用域内声明多个函数,这些函数名称相同,但参数类型、个数或顺序不同,从而实现同名函数的多态。其中,参数列表的组合成为函数的特征标,也称为函数签名。
根据函数重载的原则,虽然函数的返回值可以不同,但是函数特征标必须不同,也就是说参数列表至少有一个参数类型、个数或顺序不同。这是因为C++编译器需要依靠函数特征标来区分同名函数。如果两个函数除了返回值不同之外,函数特征标完全相同,则编译器无法识别这两个函数,从而无法进行函数调用。
因此,C++中函数重载的原则就是,当函数名相同时,必须依靠函数的参数类型、个数或顺序等参数列表来区分同名函数。返回值类型不是函数特征标的一部分,所以重载时可以返回不同类型的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值