
C++中是如何实现函数重载的? 5
6个回答
展开全部
函数重载,简单来说 就是一个函数名称,但是有多个函数定义,它们是通过函数参数来区分的,
比如
int A() { } // 函数定义1
int A(int p) { } // 函数定义2,参数 和 定义1不一样,视为重载
实际上,C++ 的函数重载比较复杂,因为这涉及到了 C++ 隐晦的类型 转换问题,深入之后自然会碰到(不过也不必担心,通常不会碰到这个问题,除非应聘工作时哪些主考官们可能会考考这类问题)。
至于 C++ 编译器怎么实现函数重载的,这主要通过 一种 叫 Name-mangling 的技术,这种技术在编译器编译函数时,根据函数参数、参数类型 参数个数 等信息, 悄悄地改写函数名字,当然改写后的名字是供编译器使用的,程序员往往不可见的。
如果你不需要在 C++中使用 Name-mangling 技术,必须 在 函数 前面 加上 extern "C" , 表示不使用 Name-mangling 技术,这也就是 为什么 前面有 extern "C" 声明的
函数 不能重载的原因
extern "C" int A() { }
extern "C" int A(int p) { } //编译错误,
比如
int A() { } // 函数定义1
int A(int p) { } // 函数定义2,参数 和 定义1不一样,视为重载
实际上,C++ 的函数重载比较复杂,因为这涉及到了 C++ 隐晦的类型 转换问题,深入之后自然会碰到(不过也不必担心,通常不会碰到这个问题,除非应聘工作时哪些主考官们可能会考考这类问题)。
至于 C++ 编译器怎么实现函数重载的,这主要通过 一种 叫 Name-mangling 的技术,这种技术在编译器编译函数时,根据函数参数、参数类型 参数个数 等信息, 悄悄地改写函数名字,当然改写后的名字是供编译器使用的,程序员往往不可见的。
如果你不需要在 C++中使用 Name-mangling 技术,必须 在 函数 前面 加上 extern "C" , 表示不使用 Name-mangling 技术,这也就是 为什么 前面有 extern "C" 声明的
函数 不能重载的原因
extern "C" int A() { }
extern "C" int A(int p) { } //编译错误,
展开全部
首先你要理解什么叫函数重载。
即一个函数多种实现。也可以说是他更细的划分。
举个例子:一个函数叫商品。它下面又分为:家电,日用品,运动。。。
实现:同名,返回值类型不同或者形参不同。其中注意带const型的。
即一个函数多种实现。也可以说是他更细的划分。
举个例子:一个函数叫商品。它下面又分为:家电,日用品,运动。。。
实现:同名,返回值类型不同或者形参不同。其中注意带const型的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++的函数重载有两种:
1,通过继承实现重载,典型的应用就是虚函数。
2,同名函数重载,函数名相同,参数类型、个数、返回值不同。
1,通过继承实现重载,典型的应用就是虚函数。
2,同名函数重载,函数名相同,参数类型、个数、返回值不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数的个数类型不同函数名相同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
形参的类型和个数、返回值的类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询