const 成员函数和数据成员的使用
1 常对象和普通对象都可以调用常成员函数。2 常对象只能调用常成员函数。3 常对象可以访问普通成员数据,但不能改变其值。4 const数据成员只能在类的构造函数的初始化表中进行初始化
//sample
class CConst{public: CConst(); ~CConst(); const int m_cnVal; int m_nVal2;public: int Add(int nA,int nB) const; int Max(int nA,int nB);};
CConst::CConst():m_cnVal(100){m_nVal2 = 2;};CConst::~CConst(){};
int CConst::Add(int nA,int nB) const{ printf("Print %d /n",nA+nB); return nA + nB;}int CConst::Max(int nA,int nB){ printf("Max %d /n", (nA>nB)?nA:nB); return (nA>nB)?nA:nB; }
int main(){ CConst obj; const CConst ConstObj; int nNum1 = 100; int nNum2 = 200; //常对象和普通对象调用常成员函数。 int nTmp = ConstObj.Add(nNum1,nNum2); printf("常对象调用常成员函数 %d + %d = %d /n",nNum1,nNum2,nTmp); nTmp = obj.Add(nNum1,nNum2); printf("普通对象调用常成员函数 %d + %d = %d /n",nNum1,nNum2,nTmp);
//nTmp = ConstObj.Max(nNum1,nNum2);//错误 常对象只能调用常成员函数。 printf("常对象访问常成员 %d /n",ConstObj.m_cnVal); printf("常对象访问普通成员 %d /n",ConstObj.m_nVal2); printf("普通对象调用常成员 %d /n",obj.m_cnVal); return 0;}