《《c程序设计基础》qa-第七章-c程序设计基础.ppt》由会员分享,可在线阅读,更多相关《《c程序设计基础》qa-第七章-c程序设计基础.ppt(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、C+程序设计基础程序设计基础Q&A第七章第七章北京邮电大学信通院北京邮电大学信通院方莉方莉 =运算符重载运算符重载=运算符重载运算符重载4const使用使用vconst使用使用常量常量常指针常指针指针常量指针常量常引用常引用常对象常对象常数据成员常数据成员常成员函数常成员函数5const使用使用vconst使用使用常量:常量:const const float PI=3.14float PI=3.14;常指针常指针 constconst int*iPtr1 int*iPtr1;或;或 int int constconst*iPtr2*iPtr2;指针常量:指针常量:int*int*constc
2、onst iPtr3 iPtr3;常引用:常引用:constconst int&A int&A;或;或 int const&Aint const&A;常对象:常对象:constconst Student s Student s;常数据成员:常数据成员:constconst int m int m;常成员函数:常成员函数:void printf()void printf()constconst;const使用使用vconst 作用作用v 可以定义可以定义constconst常量,常量,例如:例如:constconstintintMax=100;Max=100;intint ArrayMaxArr
3、ayMax;v 便于进行类型检查,便于进行类型检查,例如:例如:voidvoidf(constf(const intinti).i).编译器就会知道编译器就会知道i i是一个常量,不允许修改;是一个常量,不允许修改;v可以保护被修饰的东西,防止意外的修改,增强程序可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。的健壮性。例如上例,如果在函数体内修改了例如上例,如果在函数体内修改了i i,编译,编译器就会报错;例如:器就会报错;例如:voidvoidf(constf(const intinti)i=10;/error!i)i=10;/error!const使用使用vconst 作用作用v
4、为函数重载提供了一个参考。为函数重载提供了一个参考。classAclassA.voidvoidf(intf(inti)./i)./一个函数一个函数voidvoidf(intf(inti)const./i)const./上一个函数的上一个函数的重载重载.;const使用使用v修饰一般常量修饰一般常量,常数组,常对象常数组,常对象修饰符修饰符constconst可以用在类型说明符前,也可以用在类型可以用在类型说明符前,也可以用在类型说明符后。例如:说明符后。例如:intconstx=2;intconstx=2;或或 constintx=2;constintx=2;intconsta5=1,2,3,
5、4,5;intconsta5=1,2,3,4,5;或或constinta5=1,2,3,4,5;constinta5=1,2,3,4,5;classA;classA;constAa;constAa;或或Aconsta;Aconsta;const使用使用v修饰指针修饰指针constint*A;constint*A;或或intconst*A;/constintconst*A;/const修饰指向修饰指向的对象,的对象,A A可变,可变,A A指向的对象不可变;指向的对象不可变;int*constA;int*constA;/const/const修饰指针修饰指针A A,A A不可变,不可变,A A指
6、向的指向的对象可变;对象可变;constint*constA;/constint*constA;/指针指针A A和和A A指向的对象都不可变。指向的对象都不可变。const使用使用v修饰引用修饰引用constdouble&v;constdouble&v;该引用所引用的对象不能被更新。该引用所引用的对象不能被更新。v修饰函数的返回值:修饰函数的返回值:constconst修饰符也可以修饰函数的返回值,是返回值不可修饰符也可以修饰函数的返回值,是返回值不可被改变,格式如下:被改变,格式如下:constintFun1();constintFun1();constMyClassFun2();const
7、MyClassFun2();const使用使用v修饰类的成员函数:修饰类的成员函数:constconst修饰符也可以修饰类的成员函数,格式如下:修饰符也可以修饰类的成员函数,格式如下:classClassNameclassClassNamepublic:public:intFun()intFun()constconst;.;这样,在调用函数这样,在调用函数FunFun时就不能修改类里面的数据。时就不能修改类里面的数据。const使用使用v修饰类的数据成员:修饰类的数据成员:constconst修饰符也可以修饰类的数据成员,格式如下:修饰符也可以修饰类的数据成员,格式如下:class A cla
8、ss A private private:const int sizeconst int size;constconst数数据据成成员员在在某某个个对对象象的的生生存存期期内内是是常常量量,对对整整个个类来说是可变的;类来说是可变的;constconst数数据据成成员员不不能能在在类类声声明明中中初初始始化化,只只能能在在类类的的构构造函数的初始化列表中进行。造函数的初始化列表中进行。13const使用使用classAprivate:constintc3=7;/errorstaticintc4=7;/errorstaticconstfloatc5=7;/error.;14#includeusi
9、ngnamespacestd;classApublic:A(inti);voidprint();constint&r;private:constinta;staticconstintb;/静态常数据成员静态常数据成员;constintA:b=10;/静态常数据成员在类外说明和初始化静态常数据成员在类外说明和初始化A:A(inti):a(i),r(a)/常数据成员只能通过初始化列表来获得初值常数据成员只能通过初始化列表来获得初值const使用使用15const使用使用vconst放置的位置放置的位置constintb=500;intconstb=500;1constint*a=&b;或或intc
10、onst*a=&b;2int*consta=&b;3voidfun1()const;416const使用使用vconst使用使用如如果果constconst位位于于*的的左左侧侧,则则constconst就就是是用用来来修修饰饰指指针针所所指指向的变量,即指针指向为常量;向的变量,即指针指向为常量;如如果果constconst位位于于*的的右右侧侧,constconst就就是是修修饰饰指指针针本本身身,即即指指针本身是常量。针本身是常量。17vconst使用使用11和和22的的情情况况相相同同,都都是是指指针针所所指指向向的的内内容容为为常常量量(constconst放放在在变变量量声声明明符
11、符的的位位置置无无关关),这这种种情情况况下下不不允许对内容进行更改操作,允许对内容进行更改操作,如不能如不能*a=3a=3 ;33指指针针本本身身是是常常量量,而而指指针针所所指指向向的的内内容容不不是是常常量量,这这种种情情况况下下不不能能对对指指针针本本身身进进行行更更改改操操作作,如如a+a+是是错错误的;误的;44指针本身和指向的内容均为常量。指针本身和指向的内容均为常量。5 fun1()5 fun1()为类的常成员函数为类的常成员函数 。18const使用使用v常量常量constfloatPI=3.14;#definePI3.14 constconst常量有数据类型,编译器对其做类型安全检查,常量有数据类型,编译器对其做类型安全检查,宏宏常常量量没没有有数数据据类类型型,程程序序中中只只做做字字符符替替换换,编编译译器没有类型安全检查,一出现意想不到的错误。器没有类型安全检查,一出现意想不到的错误。