设为首页 加入收藏

TOP

C++面向对象程序设计之C++的初步知识(三)
2019-07-10 18:11:09 】 浏览:347
Tags:面向 对象 程序设计 初步 知识
p;               //函数值为长整型
p=max(g,h,i);
cout<<"max_f="<<p<<endl;
}


3个数中的最大值


程序分析:


1.3.5 函数模板


函数重载可以实现一个函数名多用,将实现相同或类似功能的函数用同一个函数名来定义。但3个函数内容基本相同,会显得太过冗长,为了简化,C++提供了函数模板。即建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代替,这个通用函数就称为函数模板。


3个整数选出最大值代码优化如下:


#include<iostream>
using namespace std;
template<typename T>                //模板声明,其中T为类型参数
T max(T a,T b,T c)                    //定义一个通用函数,用T做虚拟的类型名
{
if (b>a) a=b;
if (c>a) a=c;
return a;
}


int main()
{
int i1=8,i2=5,i3=6,i;
double d1=82.2,d2=53.4,d3=69.7,d;
long g1=78238,g2=-365,g3=45676,g;


i=max(i1,i2,i3);                    //调用模板函数,此时T被int代替
d=max(d1,d2,d3);                    //调用模板函数,此时T被double代替
g=max(g1,g2,g3);                    //调用模板函数,此时T被long代替


cout<<"max_i="<<i<<endl;
cout<<"max_d="<<d<<endl;
cout<<"max_g="<<g<<endl;


system("pause");
return 0;
}


3个数中最大数的模板优化


函数分析:


1.3.6 有默认参数的函数


一般情况下,在函数调用时形参从实参那里取值,因此实参的个数应与形参相同。同时我们也可以给形参设置一个默认值。


如有一函数声明:


float area(float r=6.5);  //指定r的默认值为6.5。
area();        //相当于area(6.5)
area(7.5);        //形参得到的值为7.5,而不是6.5


 


 


如果有多个形参,可以使每个形参都有一个默认值,也可以只对一部分形参指定默认值,另一部分不指定默认值。


实参与形参的结合是从左至右顺序进行的,因此指定默认值的参数必须放在形参表列中的最右端,否则出错。例如:


void f2(float a, int c, int b=0,char d='a');        //正确写法,默认值在形参表列中的最右端
//函数调用
f2(3.5, 5, 3, 'x')                    //形参的值全部从实参获得
f2(3.5, 5, 3)                    //******最后一个形参的值取默认值'a'
f2(3.5, 5)                        //最后两个形参的值取默认值,b=0,d='a'


 


注意:一个函数不能既作为重载函数,又作为有默认参数的函数。


 


1.3.7 变量的引用


1.引用的概念


C++中,变量的“引用”就是变量的别名,因此引用又称为别名。


假如有一个变量a,想给它起一个别名b,可以这样编写:


int a;
int &b=a;            //声明b是一个整型变量的引用变量,它被初始化为a


这就声明了b是a的“引用”,即a的别名。


对变量声明一个引用,并不另外开辟内存单元,b和a都代表同一变量单元。


当b作为了a变量的引用后,不能再作为其他变量的引用。


2.引用的简单实用


#include<iostream>
using namespace std;
int main() 
{
int a=10;
int &b=a;            //声明b是a的引用
a=a*a;                //a的值变化了,b的值也应一起变化
cout<<a<<b<<endl;
b=b/5;                //b的值变化了,a的值也应一起变化
cout<<b<<a<<endl;
system("pause");
return 0;
}


3.关于引用的简单说明


代码如下:


#include<iostream>
using namespace std;
int main()
{
int a=3;
int &b=a;
int &c=b;
cout<<&a<<" "<<endl;        //输出a的内存地址
cout<<&b<<" "<<endl;        //输出b的内存地址
cout<<&c<<" "<<endl;        //输出c的内存地址,结果显示a,b,c的地址相同
system("pause");
return 0;
}


4.将引用作为函数参数


4.1.将变量名作为实参


例1.10 无法实现两个变量的值互换的程序


#include<iostream>
using namespace std;
void swap(int a,int b)
{
int te

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java 国际化标准程序实现 下一篇Python基础教程之网络编程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目