C++教程第07章 类与对象-2成员函数的重载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章类与对象
7.1 类和对象
7.2成员函数的重载
1.成员函数重载的原则与普通函数重载的原则相同,即重载函数之间靠所包含的参数的类型或个数之间的差异进行区分。
2.成员函数的重载只是针对同一个类中的成员函数,对于不同类中的成员函数之间以及成员函数与不属于任何类的普通函数之间则不存在重载关系。因为它们属于不同的作用域,因此它们不仅函数名可以相同,而且它们的参数也可以完全一样。
例7.2.1成员函数的重载:处理一个数组构成的线性表,动态产生线性表,并输出线性表中的数据
#include
class ListClass
{ int *List ;//指向线性表的指针
unsigned nMax ;//线性表中最大长度
unsigned nElem ;//表中当前元素的个数
public:
void Init (int n=10) //初始化线性表,最大长度的默认值为10
{ List=new int [n] ;//动态分配存储空间
nMax=n ;
nElem=0 ;//表中当前元素的个数为0
}
int Elem(int) ;
int &Elem(unsigned n){return List [n] ;} //返回线性表中第n个元素的引用
unsigned Elem(void) {return nElem ;} //获取当前元素的个数
unsigned Max (void){return nMax ;} //获取线性表的长度
void Print (void) ;
int GetElem(int i) //获取线性表中第i个元素的值
{
if((i>=0)&&(i<=nElem))return List [i] ;
else return 0;
}
void Destroy (void) {delete [nMax]List ;} //释放线性表占用的存储空间};
int ListClass ::Elem(int elem) //在线性表的末尾增加一个元素,返回当前元素的个数{
if(nElem List[nElem++]=elem; return nElem ; } else{ //线性表已满,重新申请一个新的线性表int*list ; list=new int [nMax+1]; for(int i=0 :i delete [nMax]List ;//将原来的线性表所占用的空间释放 nMax++ ;//将线性表的最大长度加1 List=list ; List[nElem++]=elem ; return nElem ; } } void ListClass ::Print(void) //输出线性表的所有元素 { for(int i=0 :i cout<<'\n' ; } void main (void ) { ListClass list ,list1; list.Init(10) ; list1.Init(20) ; for (int i=0 ;i<10 ;i++) list1.Elem(i) ; cout<<"线性表list的元素的个数为:"< cout<<"线性表list长度为:"< cout<<"线性表list1的元素的个数为:"< cout<<"线性表list1长度为:"< list1.Print() ; list1.Elem(3u)=100 ; cout<<"现在线性表list1中的第三个值为;"< list1.Elem(20) ; list1.Elem (200) ; cout<<"现在线性表list1中元素的个数为:"< list1.Print() ; cout<<"现在线性表list1中的最后一个元素为:"< list.Destroy(); list1.Destroy(); } 运行结果: 线性表list的元素的个数为:0 线性表list长度为:10 线性表list1的元素的个数为: 10 线性表list1长度为:20 0 1 2 3 4 5 6 7 8 9 现在线性表list1中的第三个值为:100 现在线性表list1中元素的个数为:12 0 1 2 100 4 5 6 7 8 9 20 200 现在线性表list1中的最后一个元素为:200 例7.2.2 成员函数与非成员函数之间的函数名可以相同 # include class CAdd { public: int Add (int a ,int b) //A {return a+b ;} double Add(double x ,double y) //B {return x+y ;} }; int Add (int a , int b) { return a - b ;} //C return a+b ; void main () { CAdd c; cout<<"5+3="< cout<<"5+10="< } 运行结果: 5+3=8 3.5+6.1=9.6 5+10=15 10 – 5 = 5