C++函数重载的4种错误示例
函数重载的4种错误示例:
#include <iostream> #include <string> using namespace std; //函数重载 同函数名,函数重载有3种情况:参数类型不同、参数个数不同、参数顺序不同 //1.不能根据返回类型作为重载的依据 #if 0 int add(int num1,int num2) { cout << "int add(int num1,int num2)" << endl; return num1+num2; } #endif //-- #if 0 float add(int num1,int num2) //error: 只是返回类型不同,函数名、参数都一致,则不能算作重载,int add()和float add()一起出现会报错,故用#if屏蔽 { cout << "float add(float num1,float num2)" << endl; return num1+num2; } #endif #if 0 //2.存在二义性,因为int可以转成long,也可以转成double,编译器不知道应该调用哪个函数 long add(long num1,long num2) { cout << "long add(long num1,long num2)" << endl; return num1+num2; } double add(double num1,double num2) { cout << "double add(double num1,double num2)" << endl; return num1+num2; } #endif //3.存在二义性,因为int可以赋给int,也可以赋给const int&,也可以赋给int&,编译器不知道应该调用哪个函数 #if 0 int add(int num1,int num2) { cout << "int add(int num1,int num2)" << endl; return num1 + num2; } //-- int add(const int &num1,const int &num2) //重载了第1个add函数 { cout << "int add(const int &num1,const int &num2)" << endl; return num1 + num2; } //-- int add(int &num1,int &num2) //重载了第1个add函数 { cout << "int add(int &num1,int &num2) " << endl; return num1 + num2; } #endif //4.存在二义性,编译器不知道应该调用哪个函数 int add(int num1,int num2) { cout << "int add(int num1,int num2)" << endl; return num1+num2; } //-- ,) { cout << "int add(int num1,int num2=0,int num3=0)" << endl; return num1+num2+num3; } int main() { //1.不能根据返回类型作为重载的依据 #if 0 int res; res = add(,); //error,存在二义性,因为int可以转成long,也可以转成double,编译器不知道应该调用哪个函数 #endif //2.存在二义性,因为int可以转成long,也可以转成double,编译器不知道应该调用哪个函数 #if 0 int num1,num2; long res; //res = add(num1,num2); //error,存在二义性,因为int可以转成long,也可以转成double,编译器不知道应该调用哪个函数 #endif //3.存在二义性,因为int可以赋给int,也可以赋给const int&,也可以赋给int&,编译器不知道应该调用哪个函数 #if 0 int res; res = add(,); //erroe:存在二义性,编译器不知道应该调用哪个函数 #endif //4.存在二义性,编译器不知道应该调用哪个函数 int res; //res = add(1,2); //error:存在二义性,编译器不知道应该调用哪个函数 }
C++函数重载的4种错误示例的更多相关文章
- javascript 函数重载另一种实现办法
最近在读javascript忍者 感受下jquery作者 john Resig对于js的独到见解. 先上代码: function addMethod(object,name,fn){ var old ...
- 深入浅出TypeScript(3)- 函数重载和泛型
面向对象特性中,最根本的就是面向对象的三大基本特征:封装.继承.多态.同时,TypeScript中也存在多态的使用,比如函数重载,今天我们先看一下函数重载以及泛型的概念. 什么是函数重载 简单来说,函 ...
- c++中的函数重载、函数重写、函数重定义
目录 一.函数重载 二.函数重写 三.函数重定义 为了更加深刻的理解 函数重载.重写.重定义,我们可以带着如下这两个问题去思考: 1.子类中是否可以定义父类中的同名成员?为什么? 可以,因为子类与父类 ...
- c++类成员函数重载常量与非常量版本时避免代码重复的一种方法
c++有时候需要为类的某个成员函数重载常量与非常量的版本,定义常量版本是为了保证该函数可作用于常量类对象上,并防止函数改动对象内容.但有时两个版本的函数仅仅是在返回的类型不同,而在返回前做了大量相同的 ...
- 039-PHP使用闭包函数来进行父实例的变量自增,错误示例
<?php // 如何使用闭包函数来进行父实例的变量自增,错误示例 function demo(){ $num = 1; $func = function() use($num){ echo $ ...
- 4.C++中的函数重载,C++调用C代码,new/delete关键字,namespace(命名空间)
本章主要内容: 1)函数重载 2)C++调用C代码 3)new/delete关键字实现动态内存分配 4)namespace命名空间 大家都知道,在生活中,动词和不同的名词搭配一起,意义都会大有不同,比 ...
- JavaScript函数重载
译者按: jQuery之父John Resig巧妙地利用了闭包,实现了JavaScript函数重载. 原文: JavaScript Method Overloading 译者: Fundebug 为了 ...
- 5.3 C++用顶层函数重载操作符
参考:http://www.weixueyuan.net/view/6381.html 总结: 可以将操作符重载函数声明为顶层函数. 如果以顶层函数的形式重载操作符时,二元操作符重载函数必须有两个参数 ...
- Javascript函数重载,存在呢—还是存在呢?
1.What's is 函数重载? );//Here is int 10 print("ten");//Here is string ten } 可以发现在C++中会根据参数的类型 ...
随机推荐
- [ C语言 ] 迷宫 迷宫生成器 [ 递归与搜索 ]
[原创]转载请注明出处 [浙江大学 程序设计专题] [地图求解器] 本题目要求输入一个迷宫地图,输出从起点到终点的路线. 基本思路是从起点(Sx,Sy)每次枚举该格子上下左右四个方向,直到走到终点(T ...
- 【BZOJ4710】分特产(容斥原理,组合计数)
题意:有m种特产,第i种有a[i]个 有n个同学分特产,要求: 1.恰好分完 2.每个人至少要分到一个 求方案数模10^9+7 n,m,a[i]<=1000 思路:WYZ作业 首先考虑对于每一种 ...
- hdu3756(三分)
题意:三维坐标轴,有以原点为圆心,底面在xoy平面上,顶点在z轴上的圆锥,问圆锥的最小体积为多少才能完全覆盖空间里的所有点(n<=10000) 分析: 很容易想到转成二维问题,将其投影到xoz平 ...
- 洛谷 P1318 积水面积
P1318 积水面积 题目描述 一组正整数,分别表示由正方体迭起的柱子的高度.若某高度值为x,表示由x个正立方的方块迭起(如下图,0<=x<=5000).找出所有可能积水的地方(图中蓝色部 ...
- 命令行man的帮助手册
http://blog.csdn.net/gatieme/article/details/51656707 指定使用那种语音的手册,可以使用命令选项-M man -M /usr/share/man/z ...
- HDU 2054 A == B ?(找小数点)
题目链接:pid=2054" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=2054 Prob ...
- STM8S---外部中断应用之长按键识别
STM8经常使用中断指令 开总中断 _asm("rim"); 禁止中断 _asm("sim"); 进入停机模式 _asm("halt"); ...
- influxDB+telefraf+grafana
此贴自己记录 下载grafana https://grafana.com/grafana/download?platform=windows 从官网下载influxDB\telefraf的方法 : h ...
- Redis3.0--集群安装部署
准备环境 操作系统:CentOS6.5 Redis3.0.0 192.168.3.154 192.168.3.158 192.168.3.160 192.168.3.162 一.安装 安装文件夹 / ...
- MySQLi 和 PDO 连接 MySQL
PHP 连接 MySQL PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Dat ...