常对象成员

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

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() ;
}

输出如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值