C++之类的常成员

        类的常成员与类的静态成员相似。类的常成员包括常数据成员和常成员函数。

       常数据成员

       在类的成员定义中,使用修饰符const说明的数据成员称为常数据成员。常数据成员必须初始化,并且它的数值不能被更新。常数据成员是通过构造函数的成员初始化列表进行初始化的。

       还是举例说明常数据成员:

<span style="font-size:18px;">#include <iostream.h>
class A 
{
public:
	A(int i);//定义的构造函数
	void Print();//函数体在类外的一般成员函数
	const int &r;//整型常数据成员的引用
private:
	const int a;//一般的常数据成员
	static const int b;//静态的常数据成员
};
const int A::b=15;//给静态的常数据成员赋值
A::A(int i):a(i),r(a)//通过构造函数的初始化列表进行初始化
{
}
void A::Print()//一般成员函数的函数体
{
	cout<<a<<","<<b<<","<<r<<endl;
}
void main()
{
	A a1(50),a2(30);//定义有参数的两个对象
	a1.Print();//通过对象来引用成员函数
	a2.Print();
}</span>

分析:(1)该程序中定义了三个常数据成员,分别为const  int  &r;    const   int   a;   static   const  int   b;

           (2)一般的常数据成员的初始化需要构造函数初始化列表进行初始化。

           (3)通过使用构造函数对两个对象进行初始化,把i赋值给a,再把a赋值给r。在这个过程中,一旦赋值就不再更新,b的数值也是被赋值后一直保持不变。因此结果为:50,15,50和30,15,30.

 

       常成员函数

       在类的成员函数中,使用const修饰符说明的成员函数称为常成员函数。在程序中,只有常成员函数才被常对象引用。常成员函数的定义格式为:<类型说明符>  <函数名>  ( <参数表>)  const 其中,在该函数的实现部分也要加const。

       举例来说明常成员函数:

<span style="font-size:18px;">#include <iostream.h>
class B 
{
public:
	B(int i,int j)//定义的带两个参数的构造函数
	{ b1=i;b2=j;}
	void Print();//函数体在类外的一般成员函数
	void Print() const;//函数体在类外的常成员函数
private:
	int b1,b2;
};
void B::Print()//一般成员函数的函数体
{
	cout<<b1<<";"<<b2<<endl;
}
void B::Print() const//常成员函数的函数体
{
    cout<<b1<<":"<<b2<<endl;
}
void main()
{
	B bb1(12,5);//定义的一般对象
	bb1.Print();//通过对象来引用成员函数
	const B bb2(10,9);//定义的类的常对象,只能引用常成员函数
	bb2.Print();
}</span>

分析(1)程序中出现了两个重载函数,void Print()和void Print() const。一个是一般的成员函数,后者是常成员函数。

       (2)通过调用构造函数进行对象的初始化,结果为12;5和10:9

 


 


 

       

     

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值