Const

Conast

1. 变量加Const

1.1 引用

引用值不变
用途:函数参数传递,避免调用拷贝构造函数

void dosomething(cosnt &int a, const &int b)

1.2 指针

指针指向的内容不变

const int *p = 8;

指针值不变

int a = 8;
int* const p = &a;

指针和指向的内容都不变

int a = 8;
const int * const  p = &a;

1.3 普通变量

常量

const int a = 8;

2. 函数加Const

2.1 函数后

说明函数不修改类成员变量

class test
{
public:
	test(){}
	~test(){}
	void dosomething(int a, int b) const
	{
		// 错误
		c = a + b;
	}
private:
	int c;
};

2.2 函数前

说明返回一个const值

const int dosomething(int a, int b)
{
	return a + b;
}

4. 同名函数

我们经常看到在一个类型中,有相同的两个函数,一个后面有const,一个后面没有。

class test
{
public:
	test() : a(1){}

	~test(){}

	int get()
	{
		return a;
	}

	int get() const
	{
		return a;
	}

private:
	int a;
};

这是为啥子呢?
因为在使用类对象时,对象有可能是const和非const对象,如果是const对象的话,函数就不可以修改对象的成员变量。那么这时如果调用一个结尾没有const的对象函数,就会报错。

void dosomething(const test& a)
{
	a.get();
}

这里看起来没什么特别的,但实际上调用的是int get() const,编译就能够通过啦

3. Reference

1、在c++中其实是有最小权限原则的,非const对象是可以调用const成员函数的。

2、const成员函数是不能调用非const成员函数,只能通过强制或者定义mutable

3、构造与析构函数不能定义为const成员函数,构造跟析构会对对象做修改

const成员函数和非const的成员函数之间的调用

C++ const函数怎么调用非const函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值