C++函数设计和使用

来源:互联网 发布:linux 切换root 编辑:程序博客网 时间:2024/06/16 07:06

/*
*程序名称:CppFunction
*程序描述:C++函数设计和使用
*编写时间:20121214
*/
#include <iostream>
using std::cout;

/*
*重载:
*1.函数同名;
*2.每个函数所参数个数不同;
*3.参数个数相同的,至少有一对对应参数类型不同。
*注意:
* 1.参数如果是指针和数组,他们的解释方式是一样的,所传送的参数都是地址 
* 2.如果重载带有引用参数的函数,不能把给定类型type的函数重载为参数类型是type&(引用)的函数 
* 3.const仅能用于在函数签名时,区分是为引用定义参数,还是为指印定义参数。对于任何基本数据类型T,
* 参数类型是const T的函数都会解释为参数类型是T的重载函数,const会被忽略。
* 4.如果参数类型是指向type的指针和const type的指针就不同了,const表示禁止修改,没有const修饰符
* 初始值可以通过指针修改。
*/

bool larger(int param1,int param2){
 cout << "larger int:";
 if(param1 > param2){
  return true; 
 }else{
  return false;
 }
}
bool larger(double param1,double param2){
 cout << "larger double:";
 if(param1 > param2){
  return true; 
 }else{
  return false;
 }
}

/*
*函数模板(template):类似Java中的范式
*申明:template <class Type> Type fundctionName(参数列表);
*说明:
* 1.template是关键字,表示这是一个模板 
* 2.<class Type> 表示参数列表,class是关键字,表示Type是一个类型,可以是基本顾类型,也可以是类类型
* 3.模板的定义或申明必需放在函数的调用之前,和普通的函数一样;
* 4.调用时可以显式指定模板参数;
*/
//定义模板
template <class T> T tlarger(T param1,T param2){
 return param1 > param2 ? param1 : param2;
}
//重载模板
template <class T> T tlarger(T param1,T param2,int param3){
 return param1 > param2 ? param1 + param3 : param2 + param3;
}
//带有多个参数的模板
template <class Tone,class Ttwo> Tone tsum(Tone param1,Ttwo param2){
 return param1 + param2;
}

/*
*函数指针:指针指向函数的地址,在程序报告过程中, 在不同的时候可以指向不同的函数;
*申明:type (*point) (参数类型列表)
*说明:
* 1.type是所指向的函数的返回类型;括号中是指针名,前面带有星号;
* 2.初始化时直接将函数赋给指针函数即可
* 3.在程序中,可以使用指针调用函数
* 4.函数指针必需包含要调用的函数地址,以及函数的参数列表和返回类型;
* 5.可以把函数指针作为参数传送
*/
//定义函数指针并初始化,注意是参数类型列表
bool (*plarger) (int,int) = larger;

int main(){
 //重载
 cout << larger(1,2);     //0          
 cout << "\n";
 cout << larger(3.7,3.5); //1
 cout << "\n";
 //模板
 cout << "字符型:" << tlarger('a','c'); //c          
 cout << "\n";
 cout << "浮点型"<< tlarger(3.2,3.5);    //3.5
 cout << "\n";
 //显式调用
 cout << "浮点型"<< tlarger<int>(4.2,3.5);    //4
 cout << "\n";
 //调用重载模板
 cout << "重载模板"<< tlarger(3.2,3.5,10);    //13.5
 cout << "\n";
 //调用带有多个参数的模板
 cout << "多个参数的模板:"<< tsum(1,'a');    //98
 cout << "\n";
 //调用函数指针
 cout << "函数指针:"<< plarger(5,3);         //1
 cout << "\n";
 
}

 

原创粉丝点击