常函数和常对象

文章讲述了C++编程中常量成员函数的概念,强调了常函数不能修改普通成员变量,但可以修改mutable修饰的变量。同时介绍了常对象的特性,常对象不能改变其普通成员变量,不能调用非常量成员函数,但可以调用常量成员函数并修改mutable变量。
摘要由CSDN通过智能技术生成
  • 常函数

  • 1.在函数的()后面加上const,这个函数就是常函数
  • 2.常函数内不能修改普通成员变量
  • 3.const修饰的是this指针指向的空间中的变量不能改变
  • 4.mutable修饰的成员变量在常函数中可以修改
  • class Maker
    {
    public:
    	Maker(int id, int age)
    	{
    		this->age = age;
    		this->id = id;
    		score = 200;
    	}
    	//常函数,1.函数的()后面添加const,该函数是常函数
    	void printMaker()const
    	{
    		//id = 100;err//2.常函数内不能修改普通成员变量
    		//3.const修饰的是this指针指向的空间中的变量不能改变
    		//Maker *const this;
    		//const Maker*const this;这是常函数修饰的
    		score = 200;//4.mutable修饰的成员变量在常函数中可以修改
    		cout << "score=" << score << endl;
    	}
    private:
    	int id;
    	int age;
    	mutable int score;
    };
    
    
  • 常对象

  • 1.在数据类型前面加上const,让对象成为常对象
  • 2.常对象不能改变普通成员变量的值
  • 3.常对象不能调用普通成员函数
  • 4.常对象可以调用常函数
  • 5.常对象可以修改mutable修饰的成员变量
  • 6.普通对象也可以调用常函数
  • class Maker
    {
    public:
    	Maker(int id, int age)
    	{
    		this->id = id;
    		this->age = age;
    		score = 100;
    	}
    	//常函数
    	void printMaker()const
    	{
    		score = 200;
    		cout << "score=" << score << endl;
    	}
    	void func()
    	{
    		cout << "func" << endl;
    	}
    public:
    	int id;
    	int age;
    	mutable int score;//mutable修饰的成员变量
    
    };
    
    void test()
    {
    	//1.在数据类型前面加上const,让对象成为常对象
    	const Maker m(1, 18);//常对象
    
    	//m.id = 100    //2常对象不能改变普通成员变量的值
    	//m.func();    //3.常对象不能调用普通成员函数
    	m.printMaker();//4.常对象可以调用常函数
    	m.score = 500;//5常对象可以修改mutable修饰的成员变量
    
    	Maker m2(2, 20);
    	m2.printMaker();//6普通对象也可以调用常函数
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值