// // main.cpp // day01-Function // // Created by aiqiyisheng on 15/1/11. // Copyright (c) 2015年 HYR. All rights reserved. // #include <iostream> using namespace std; //在C语言中 不写返回值类型 则默认返回整型int /* * fa();//声明 声明的时候参数可以不写,定义的时候可以任意给参数 fa(int a,int b){//定义 //函数体 } * */ /* 在C++中的函数一定要写返回值类型,如果没有返回值,则写void空的返回值 C++中的参数如果你不写的话,会默认给你一个void空参数 */ //英雄打怪后增加经验的函数 int addExp(int heroExp,int addExp){ return heroExp + addExp; } //打打怪就会增长百分比的经验 int addExp2(int heroExp,double addExpPtr){ return heroExp * (1 + addExpPtr); } /* void addExp2(int heroExp,double addExpPtr){ //重载跟返回值类型无关 } */ /* * 方法重载 * 方法名相同,参数列表不同(参数个数,参数类型,参数顺序) 这样就构成方法重载了 跟返回值类型无关 编译器在编译的时候遇到相同名字的方法,编译器可能会自己生成一个方法名, 例如:int addExp(int heroExp,int addExp)可能会生成这样的方法名int addExp_i_i().... int addExp(int heroExp,double addExpPtr)可能会生成这样的方法名int addExp_i_d()... 在调用的时候编译器会根据你给的参数去找对应的方法 * * */ /* 重写 :子类重写父类的方法 */ int addExp(int heroExp,double addExpPtr){ return heroExp * (1 + addExpPtr); } //告诉编译器 该方法按照“C”语言的方式处理 (不会帮你重命名) extern "C" void test(){ cout << "extern \"C\" 的作用" << endl; } //主函数 int main(int argc, const char * argv[]) { int heroExp = 1000; cout << addExp(heroExp, 100) << endl; cout << addExp2(heroExp, 0.5) << endl; cout << addExp(heroExp, 0.5) << endl; test(); return 0; }
1100 1500 1500 extern "C" 的作用 Program ended with exit code: 0
#include <iostream> using namespace std; //定义函数 函数重载 //如果找不到匹配的类型,C++会找一个相对合适的类型 //同样 如果找到很多合适的类型 那也不知道该执行那一个,例如注释掉int的方法 //void fa(char ch){ cout << "fa(char ch)" << endl;} //void fa(short st){ cout << "fa(short st)" << endl;} void fa(int it){ cout << "fa(int it)" << endl;} void fa(long lg){ cout << "fa(long lg)" << endl;} void fa(float ft){ cout << "fa(float ft)" << endl;} void fa(double de){ cout << "fa(double de)" << endl;} int main(){ //声明变量 char ch; short st; int it; long lg; float ft; double de; // fa(ch); fa(st); fa(it); fa(lg); fa(ft); fa(de); return 0; }
fa(int it) fa(int it) fa(int it) fa(long lg) fa(float ft) fa(double de) Program ended with exit code: 0
原文地址:http://blog.csdn.net/love9099/article/details/42611859