常量对象,常量成员函数和常引用

本文详细介绍了C++中的常量对象、常量成员函数、常数据成员和常引用。常量对象在创建时不可修改;常量成员函数不能修改对象状态,常量引用则是对象的只读别名,不能改变引用本身。文章还强调了常量引用作为参数使用时的风险及规避方法。
摘要由CSDN通过智能技术生成

目录

1.常量对象

2.常量成员函数

3.常数据成员

4.常引用


1.常量对象

在定义该对象的时候在前面加const关键字

class A
{
	public:
	int x,y;
    A(int m,int n):x(m),y(n)
	{
		;
	 } 
	 void show()
	 {
	 	cout<<x<<" "<<y;
	 }
 } ;
 const A a;//a是常量对象

2.常量成员函数

   (1)在类的成员函数说明后面加const关键字,则使成员函数变成常量函数
      void show2() const{cout<<x<<" "<<y<<endl;}
  (2)常量成员函数执行期间不应修改其所作用的对象。因此,在常量成员函数中不能修改成员变量         的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员函数初外) 

class A{  
public:
	int x,y;
	A(int m,int n)
	{
		x=m;y=n;
	}
    void show1()
	{
	  cout<<x<<" "<<y<<endl;
	}
    void show2() const
};
void show2() const
{
	x=0;错误,常量成员函数执行期间不应修改其所作用的对象,但是此处修改了其所作用的对象的成员变量的值 
	show1();错误, 常量成员函数内部不能调用非常量的成员函数,因为非常量的成员函数在执行过程中,有可能修改它所作用
	                  的对象的值 
}
int main()
{
	const A a;定义了一个常量对象a 
	a.x=12;错误,因为常量对象不可以被修改
	a.show1();错误,常量对象上面不能执行非常量成员函数,因为非常量成员函数在执行过程中有可能修改调a的值
	a.show2();正确,常量对象上面可以执行常量成员函数
	return 0; 
 } 

3.常数据成员

 常数据成员是不能改变的,只能通过构造函数的参数列表对常数据成员进行初始化 

正确的方式:
class A
{
	public:
		const int x,y;
		A(int m,int n):x(m),y(n){}

 } ;
错误方式:
class A
{
	public:
	const int x,y;
	A(int m,int n)
	{
		x=m;
		y=n;
	 } 
} ;

4.常引用

 首先回顾之前所学: 
 类型名&引用名=某变量名;
  int n=4;
  int & r=n;  r引用了n,并且r的类型是int &
  某个变量的引用,等价于这个变量,相当于该变量的一个别名

可以用对象的引用作为参数,如: 
class A
{
	
};
void printf(A & o)//此时o这个参数不是对象,所有o不会引发复制构造函数的调用 
{
	
}

 但是对象引用作为函数的参数有一定的风险性,若函数中不小心修改了形参o,则实参也跟着改变,这可能不是我们想要的,
所有如何避免?

改变的代码如下:
class A
{
	
 } ;
void printf(const A & o)
{
	
}
这样函数中就能确保不会出现无意中更改o的值的语句了 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值