常对象成员

来源:互联网 发布:cheney算法 编辑:程序博客网 时间:2024/04/28 14:39

常对象成员包括常成员函数和常数据成员。

1.  常成员函数

使用const关键字声明的函数为常成员函数,常成员函数声明格式如下:

类型  函数名(参数表)  const ;

对于常对象成员需要注意以下几点:

(1)    const是函数类型的一个组成部分,因此在实现部分也要带const关键词。

(2)    常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数

(3)    如果将一个对象声明为常对象,则通过该常对象只能调用它的常成员函数,而不能调用其他成员函数。

(4)    const关键字可以参与区分重载函数。例如,如果在类中有如下声明,则这是对print的有效重载。

void print() ;

void print()  const ;

例:如下代码

#include <iostream>using namespace std ;class Sample{int n ;public :Sample(int i) { n = i ;}void print() {cout << "1: n = " << n << endl ;}void print() const {cout << "2: n = " << n << endl ;}} ;void main(){Sample a(10) ;const Sample b(20) ;a.print() ;b.print() ;}

输出如下:


2.  常数据成员

就像一般数据一样,类的成员数据也可以是常量和常引用,使用const声明的数据成员为常数据成员。如果在一个类中声明了n个常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化,其一般格式如下:

      构造函数(参数表):常数据成员1(参数1),常数据成员2(参数2),···,常数据成员n(参数n)

其中,冒号后面是一个数据成员初始化列表,它包含一个初始化项,当有多个初始化项时,要用逗号分隔开。“参数1”~“参数n”均为“参数表”中的某个参数。这样,在执行构造函数时自动将“常数据成员1”赋值为“参数1”的值,“常数据成员2”赋值为“参数2”的值,“常数据成员n”赋值为“参数n”的值等。

例:如下代码

#include <iostream>using namespace std ;class Sample{const int n, m ;public :Sample(int i, int j) : n(i), m(j) {} void print() {cout << "n = " << n << ", m = " << m << endl ;}} ;void main(){Sample a(10, 20) ;a.print() ;}

输出如下:




原创粉丝点击