❥关于C++之const重载与调用

Posted itzyjr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了❥关于C++之const重载与调用相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;
struct A 
	int count() 
		cout << "non const" << endl;
		return 1;
	
	int count() const // 调用对象不能被修改
		cout << "const" << endl;
		return 1;
	

	int count(int& s) 
		cout << "non const(ref arg)" << endl;
		return 1;
	
	int count(const int& s) // 参数不能被修改
		cout << "const(ref arg)" << endl;
		return 1;
	
;
int main () 
	A a;
	a.count();// 调用对象不是const
	const A ca;
	ca.count();// 调用对象是const

	a.count(4);// 参数是const
	int x = 4;
	a.count(x);// 参数不是const
	return 0;
non const
const
const(ref arg)
non const(ref arg)

从上面的输出结果我们也可以看到:

1. const修饰的对象调用的是使用const修饰的方法,非const对象调用的是非const的方法。

2. 不只是参数类型和个数不同会产生重载,const修饰的参数也会有重载。但是只有当const修饰的是指针或者引用类型时才可以,普通的int和const int会编译失败!

以上是关于❥关于C++之const重载与调用的主要内容,如果未能解决你的问题,请参考以下文章

C++点滴----关于类常成员函数

C++ 中 const 重载有啥用?

在非常量对象上,为啥 C++ 不调用具有 public-const 和 private-nonconst 重载的方法的 const 版本?

C++类和对象(this指针6个默认成员函数const成员)

[ C++ ] 类与对象(下)日期类Date补充及流提取和流插入运算符重载

❥关于C++之成员与友元函数重载运算符