C++常量及常对象、成员汇总

           到了做题阶段,发现对C++中一些常量和常对象、函数等这些东西还是区分的很不好,各种乱,所以有必要好好整理一下了。

            这里我画了一张图,从这张图入手来分析结构应该会更清晰一些:

           

            首先来看左上部分的常量:包括文字、符号常量和常变量。

 

            文字常量就是一个具体的数字,如S(圆的面积)=r*r*3.14,3.14就是一个文字常量。

            他有两个很明显的缺陷:可读性差和可维护性差。           

            为什么?一个没学过S(圆)的人,哪知道3.14是常量?而且,如果程序需要反复出现一万次这个公式,我们难道要写一万次3.14?这个还好,如果是3.1415926的话,呵呵,那就只剩下”呵呵"了。

 

            符号常量就是一个符号化的数值(可以理解为符号化的文字常量~),来看定义形式:#define PI   3.14 

            在定义时候要注意:1、不能用=;2、不能用分号结尾,因为#define是预处理指令。

            另外,他弥补了文字常量的不足,具有良好的可读性和可维护性,这里就不多说了,很好理解。

 

            常变量又是什么?当然就是常(变量)啦。从定义格式来看:const  数据类型  符号常量名  = 数值;也就是const+变量定义,所以它就是用const修饰的变量。注意:在定义时,一定要给它初始化,以保证其不被修改。

            对比三者之间的联系:符号常量=符号化(文字常量);常变量=用const定义的(符号常量)

            接着说常变量。我们在程序中,通常都是使用常变量而不是符号常量,为什么?

            这也是它独特的优点:1、格式良好,与我们常见的变量定义格式类似;

                                                2、类型明确,我们可以按需要选择明确的类型,以节省空间。

            再提一个问题:为什么前两个常量类型没有数据类型?因为它们不占内存!只有常变量才占,所以要考虑数据类型的问题。

 

            下面说另一大部分——常对象与常成员,包括常对象、成员函数及常数据成员。

            常对象,其实就是不允许修改的对象。来看定义格式:类型  const  对象名   或   const  类型  对象名,这是两种形式。

            它的初始化同常数据成员一样,都要通过构造函数来进行。如:

           

int main()
{
       const Clock C1(14:51:22)   //定义常对象,并进行了初始化
}


Class A{    
private:
       const int& r;//定义常引用数据成员
       const int a;//常数据成员    
public:
       A(int i):a(i),r(a)  //常数据成员初始化
       {
             cont<<"Show!"<<endl;
       }
}

                访问性:常对象与常成员函数能且只能互相访问。

            常数据成员就是const修饰的数据成员。显然,它是一个数据成员,那么它与上面谈到的常变量有什么关系?

            他们的相同点是定义形式一样;区别就是前者(常数据成员)必须在类体内定义。

            

            常成员函数上面我们也提到了它和常对象的情意绵绵,实际上,它就是为了访问类的常对象而生的!

            它的定义形式和以上几个有些不同:返回类型  成员函数名  (参数表) const;const要在最后边。

            下面有一张成员函数和对象的操作关系图,清晰地呈现了二者的恩怨纠葛:

           

             最后就是一般函数和常函数的重载问题,总结起来就一句话:常对象调用常成员函数,一般对象调用一般成员函数。

 

             总结:无论是常对象、成员还是常量,都要遵循“常”的原则,打死都不变!

                        本文的重点就是思维导图展示的关系和常变量、常成员及对象的区分。其实这些关系无非也就是平日里“常常联合”,重载时“各回各家”。只要理清他们的关系,做到心中有图就可以了。

 

             
              

            

            

                

           

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值