【c++函数重载 参数分别为为int和float,但是传入3.14报错】

#include <iostream.h>

class Base

{

public:

void f(int x){ cout << "Base::f(int) " << x << endl; }

void f(float x){ cout << "Base::f(float) " << x << endl; }

};

void main(void)

{

Base *pb = new Base();

pb->f(3.14);

//vs2013编译报错

//g:\program\c++\c++\c++.cpp(82): error C2668: “Derived::f”: 对重载函数的调用不明确

//1>          g:\program\c++\c++\derived.h(11): 可能是“void Derived::f(int)”

//1>          g:\program\c++\c++\derived.h(10): 或       “void Derived::f(float)”

//1>          尝试匹配参数列表“(double)”时

}

??为什么呢?原因是传入的参数3.14.在vs2013中3.14默认是double类型的常数,那么从double可以隐式转化为float或是int,编译器就会报错,有两个函数可以调用,到底用哪个?修改为pb->f(3.14f),就好了,这样显式声明为float类型。就没有调用的歧义了。

时间: 2024-08-05 05:53:56

【c++函数重载 参数分别为为int和float,但是传入3.14报错】的相关文章

android-The method findViewById(int) is undefined for the type ContactMainFragment报错

@Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mTitleNameView = (TextView) findViewById(R.id.ivTitleName); mTitleNameView.setVisibility(View.VISIBLE); mTitleNameView.setText(

C++关键字、命名空间、函数重载、缺省参数、内联函数、引用

一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值nullptr&nullptr_t 二. 正文 1.C++关键字(C++98) C++98中的关键字总共用63个,如下表: 在这这做简单介绍,感兴趣的朋友可以参考相关资料作进一步了解. 2.命名空间 由于在编写程序的过程中,很容易出现变量.函数和类重名的现象,这些变量.函数和类都在全局作用域中,因此会导致很多

C++的函数重载(转)

函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题 1.声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了) 2.当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢) 这两个问题是任何支持函数重载的语言都必须要解决的问题!带着这两个问题,我们开始本文的探讨.本文的主

7.*函数的参数

函数为什么要定义函数函数分类内置函数自定义函数返回值/返回函数函数返回值返回函数闭包函数的参数介绍位置参数默认参数可变参数 函数 为什么要定义函数 代码冗余 不方便管理,维护性差 组织结构差 函数分类 内置函数 https://docs.python.org/3/library/functions.html#abs 自定义函数 def func_1(): #func_1 function pass print(func_1.__doc__) 用于显示函数注释 函数也分有参函数和无参函数, 定义时

函数的返回值、函数的调用、函数的参数

1.函数的返回值 ''' 1.什么是返回值 返回值是一个函数的处理结果, 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 --------(值可以是是以数据类型) 注意: 1.return是一个函数结束的标志,函数内可以有多个return, 但只要执行一次,整个函数就会结束运行------即函数下面有再多代码也不会被执行 2.return 的返回值无类型限制,

python交互环境中导入文件中自定义的函数报错

今天在学习python自定义函数时,遇到一个问题:我用notepad++编辑器自定义的函数,在交互环境下使用from 文件名 import 函数名 导入时,一直报错,检查了好几遍,一直报这个错: 代码如下: # -*-coding:utf-8 -*- #自定义函数 def 函数名(参数1,参数2...): 然后在缩进体内编写函数体,用return返回值 #自定义求绝对值函数 #def my_abs(x): #如果参数类型不是int或者float,会抛出类型错误异常 # if not isinst

函数重载和默认参数

区别一是参数类型不同,二是参数个数不同 仅有函数返回值不同也是区分不了重载函数的 1 #include <iostream> 2 using namespace std; 3 4 void go(int i, double db)//参数的个数,参数的类型不同,顺序不同,与返回值无关 5 { 6 7 } 8 9 void go(double db, int i) 10 { 11 12 } 13 14 void main() 15 { 16 17 system("pause"

默认参数与函数重载

一.默认参数在C++中,可以为参数指定默认值.在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数. 默认参数的语法与使用:(1)在函数声明或定义时,直接对参数赋值.这就是默认参数:(2)在函数调用时,省略部分或全部参数.这时可以用默认参数来代替. 注意:(1)默认参数只可在函数声明中设定一次.只有在无函数声明时,才可以在函数定义中设定.(2)默认参数定义的顺序为自右到左.即如果一个参数设定了缺省值时,其左边的参数都要有缺省值.如:int mal(int a, int b=3, int

面向对象程序设计-C++_课时17函数重载和默认参数

函数重载,区别一是参数类型不同,二是参数个数不同. 默认参数可以多于1个,但必须放在参数序列的后部. 尽量不要用默认参数,会影响阅读 error C2668: “f”: 对重载函数的调用不明确 1 #include <iostream> 2 using namespace std; 3 4 void f(int i, int j = 0)//默认参数 5 { 6 std::cout << i << " " << j << st