什么是常对象,就是加了一个const就是的对象;常成员函数 表示该成员函数不能修改数据成员的值。格式:
返回值类型 函数名(形参列表) const {
函数体内容;
}
概念结束
先引入指针为例:
- #include
-
- using namespace std;
- void fun(int *p){
- cout << "接收普通指针的普通方法 " <
- }
- void const_fun(const int *p){
- cout << "接收常量指针的普通方法 " <
- }
- int main()
- {
- int a=10;
- int *p1=&a;
- const int *p2=&a;
- fun(p1);
- //fun(p2);//error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
- const_fun(p1);
- const_fun(p2);
- return 0;
- }
const类型的指针无法转化为普通指针,普通指针可以转化为const类型的指针
对于对象来说的话
- #include
-
- using namespace std;
-
- class Person {
- private:
- string name;
- int age;
- public:
- Person(){}
- Person(string name,int age):name(name),age(age){}
- void show(){
- cout << "i am person" <
- }
- };
-
- int main() {
-
- const Person p1("张三",18);
- p1.show();//error: passing 'const Person' as 'this' argument discards qualifiers
-
- return 0;
- }
常对象无法调用非常成员函数,以上代码会报错
我们应该知道,在一个非静态成员函数中存在一个隐藏的this指针,如果这个this指针的类型不同也会构成函数的重载,就相当于新建对象去找另外一个成员函数的方法了,而这肯定是不存在的
- #include
-
- using namespace std;
-
- class Person {
- private:
- string name;
- int age;
- public:
- Person(){}
- Person(string name,int age):name(name),age(age){}
- void show(){
- cout << "i am person" <
- }
- void show()const{
- cout << "i am person" <
- }
- };
-
- int main() {
-
- const Person p1("张三",18);
- p1.show();
- return 0;
- }
这样写不会报错,函数也没有被重复定义
-
相关阅读:
编程实例:多人同时计时计费管理系统软件,可适用于钓场计时等管理
API测试简介
猿创征文|【第5天】SQL快速入门-必会的常用函数(SQL 小虚竹)
Python学习七:数据库编程接口
golang语言的gofly快速开发框架如何设置多样的主题说明
国内“谁”能实现chatgpt,短期穷出的类ChatGPT简评(算法侧角度为主),以及对MOSS、ChatYuan给出简评,一文带你深入了解宏观技术路线。
【CVPR 2022】QueryDet:加速高分辨率小目标检测
【C++】DICOM医学影像工作站PACS源码
Python生成指定大小的文件
Window环境NFS服务务器搭建及连接
-
原文地址:https://blog.csdn.net/weixin_53762703/article/details/133825650