C++中常对象成员包括常成员函数和常数据成员。
1)常成员函数
使用const关键词说明的函数为常成员函数,常成员函数说明格式如下:
<类型> <函数名>(<参数列表>) const;
关于常成员函数需要注意的有:
a,const是函数类型的一个组成部分,因此在实现的部分也要带const关键词。
b,常成员函数不更新数据成员,也不能调用该类中没有const修饰的成员函数。
c,如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,而不能调用其它成员函数。
d,const关键词可以参与区分重载函数,如void pf(); void pf() const;实施对pf的重载。
#include <iostream> using namespace std;
class Cn { public: Cn(int r1,int r2) {ra = r1; rb = r2;} void print(); void print() const; //常成员函数 private: int ra, rb; };
void Cn::print() { cout<<ra<<","<<rb<<endl; cout<<"print()"<<endl; }
void Cn::print() const //实现部分也要带上const关键词 { cout<<ra<<","<<rb<<endl; cout<<"print() const"<<endl; }
int main() { Cn a(5, 8); a.print(); //调用void print(); const Cn b(20, 80); //定义常对象 b.print(); //只能调用常成员函数void print() const; return 0; }
|
2)常数据成员
如果一个类中说明了常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化。
#include <iostream> using namespace std;
class Sample { private: const int n; //声明常数据成员 public: Sample(int i):n(i) { } //常数据成员只能通过构造函数的初始化列表进行初始化 void print() { cout<<"n="<<n<<endl; } };
int main() { Sample a(100); a.print(); return 0; }
|
3)静态常数据成员
静态常数据成员的初始化,要在类的外部进行。如在类中有static const int b;其初初始化在类的外进行,为const int B::b = 10;
阅读(1417) | 评论(0) | 转发(0) |