随笔 - 28  文章 - 0  评论 - 295  阅读 - 30万

【C++自我精讲】基础系列三 重载

【C++自我精讲】基础系列三 重载
0 前言

分二部分:函数重载,操作符重载。

1 函数重载

函数重载:指在同一名字空间中,函数名称相同,参数类型、顺序或数量不同的一类函数,同一函数名的函数能完成不同功能。

复制代码
//非函数重载,只是返回值不一样
void Fun(int i);
int  Fun(int i);

//非函数重载,不在同一名字空间
namespace A
{
    int Add(int i, int j); 
};
namespace B
{
    float Add(float i, float j); 
};

//函数重载
int Add(int i, int j); 
float Add(float i, float j); 
复制代码

重命名机制:函数重载的名称都是一模一样的,C++编译器就是通过重命名机制来区别这些同名函数的(不同的C++编译器,重命名机制可能不一样)。

//重命名机制
void Fun(int i, double j);  //c++编译器把函数名Fun其实重命名为_Fun_int_double
void Fun(double i, int j);  //c++编译器把函数名Fun其实重命名为_Fun_double_int

C++调用C 函数:C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。

  void Fun(int i, ini j); C 编译器编译后的名字为_Fun。

  void Fun(int i, int j); C++编译器编译后的名字为_Fun_int_int。

  C 编译器和C++编译器产生的名字不同,所以C++不能直接调用C 函数。用extern“C”解决。

extern "C"
{
    //头文件
    #include “header.h”  
    //函数
    void Fun(int i, int j);
}
2 操作符重载

操作符重载:指用关键字operator加运算符表示的函数。可以把其理解为特殊形式的函数,运算符本身是函数名。

int Add(int i, int j);       //普通函数
int operator+(int i, int j); //+运算符函数
//用法
int k = Add(10, 20);
int m = 10 + 20;

 操作符重载规则:

 

 ps:后面讲到类时再结合例子讲解下操作符重载为成员函数。

posted on   joinclear  阅读(1003)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示