C/C++关键字const与class对象

#include<iostream>
using namespace std;

class Demo
{
	public:
		//不论将来会不会使用,但是只要自定义了构造函数
		//为了防止会用到无参构造函数,就先把这个定义到这里
		Demo(){}

		Demo(int a,int b)
		{
			this->a = a;
			this->b = b;
		}

		void show()
		{
			cout << "a = " << a << endl;
			cout << "b = " << b << endl;
			//因为show() 是一个非静态成员函数
			//因此这里第一个参数是一个 Demo *this 类型的形参
			//所以就可以调用getValue();这个函数了,
			//而且调用方式相当于
			//
			/*
			void show(Demo *this)
			{
				getValue(this)
			}
			*/
		}

		//void setValue(const Demo *this,int a,int b)
		//一般const 不这样用,从字面意思,是设置值
		//void setValue(int a,int b)const
		void setValue(int a,int b)
		{   
			//因为加了const 所以这里将不会被修改,
			//因为后面的const 实际上是修饰这里的第一个隐含的
			//当前对象:const Demo *this 
			//就相当于是  const int a ; 
			//然后又想去给a 赋值,因此这是不可以的
			
			this->a = a;
			this->b = b;
		}

		//一般情况会这样使用const 去修饰函数
		//表示只读
		int getValue()const
		{
			return this->a;

			/*
			 	这里是不可以调用非const 修饰的成员函数
				因为真是的程序应该是这样:
				int getValue(const Demo *this)
				{				
					setValue(this,12);
					因为上面本来传进来的是const 类型的this指针,
					所以它不满足setValue()中的第一参数类型
					也就是说,参数不匹配
				}
			*/
		}


	private:
		int a;
		int b;
};

int main()
{
	
	Demo demo1(10,20);
	demo1.show();
	demo1.setValue(100,200);
	cout <<"Demo->a = " << demo1.getValue() << endl;

	
	//不能再修改demo2中的成员变量
	const Demo demo2;
	
	
	
	return 1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值