【C++学习笔记(十四)】之常函数与常对象

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. 常函数

       我们都知道this指针是指向类对象的, 且这个地址是一直不变的,即const性质的。设置一个类Person,可以将它记为 Person * const this; 字面意思就是this这个指针的值是不变的,即所指向的类对象是不变的。
       那么如果要让指针指向的类对象中的值无法修改时,即 Const Person* const this;要怎么做呢?
       这就要用到常函数了,如

void c1() const{}

       可以看到,我们在普通的函数后面增加了const ,代表着这个函数是常函数。在这个函数中,this指针指向的类对象的值是无法修改的 。
       但同时,C++也给我们放宽了一点,提供了mutable关键字来突破const的限制,若类中有些值我们需要修改,便可以声明为mutable,即使是在常函数中,也是可以修改的。

mutable int a;

二. 常对象

       常函数只能在函数的范围内控制类对象不能被修改,如果我想把这个控制范围扩大呢?扩大到整个类对象的范围,就变成了常对象了。即定义一个整个类对象中的值都是无法被修改的。

const Person p2;

       常对象不可以调用普通的成员函数,因为普通的成员函数有修改成员变量的风险,而常变量已经声明了不允许修改对象的属性。因此,常对象只能调用常函数。
       常对象调用常函数:

Void c2() const{}
Const Person p2;
P2.c2();

三. 代码:

#include<iostream>
using namespace std;

class Person {
public:
	Person()
	{
		a = 0;
		b = 0;
	}

	void text() const	//常函数
	{
		cout << "a = " << a << endl;
		cout << "b = " << b << endl;
	}

	int a;
	int b;
};

void test()
{
	Person p1;
	p1.text();

	const Person p2;		//常对象
	p2.text();
}

int main()
{
	test();
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值