千家信息网

C++常量都有哪些

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,C++常量都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.常量形参当形参有顶层const或者底层const的时
千家信息网最后更新 2025年02月04日C++常量都有哪些

C++常量都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1.常量形参
当形参有顶层const或者底层const的时候,传给它常量对象或者非常量对象都是可以的,在这里我们主要考虑形参无const, 而实参有const的情况,其实这里也十分简单,只需要记住一点:底层const的限制,就可以了。

2.常量返回值
这里也很简单,略过不提。

3.常量成员函数
常量函数里的const是用来修饰*this的,其形式如下:

int f() const{```}

然后这里就有意思了
*this的默认类型是type *const this,this指针有一个顶层const,但并没有底层const,由于低层const的限制,有底层const的实参不能拷贝给默认版的*this,也就是说常量对象的引用或指针都不能调用默认版的*this成员函数。
还没完。。。
刚刚我们已经明确了有底层const的实参是无法初始化默认版*this,但是拥有顶层const的对象是不是就能初始化默认版的*this, 然后调用函数呢?
不是。。

//定义一个简单类studentclass student{public:  string name;  int number;public :  student() :name("lili"), number(0){ }//构造函数  string Name(){return name;}//非常量成员函数  int Number() const{return number;}//常量成员函数};//现在定义一个常量student对象const student s1;s1.Name();//报错s1.Number();//正确

事实上,当我们调用s1.Name()的时候发生了以下初始化过程:

student *const this=&s1;

此时相当于如下过程:

const student *s1;student *const this=s1;

很显然s1有一个底层const, 而this没有,初始化失败。
同理,如果一个实参是 int *const p,那么在初始化this的时候,会转化成const int *const p, 有一个底层const, 初始化失败。
常量对象,常量对象的指针或者引用都只能调用常量成员函数。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

常量 函数 对象 底层 成员 指针 时候 顶层 形参 过程 帮助 限制 C++ 清楚 有意思 也就是 也就是说 事实 事实上 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高速列车网络技术课本 检索没有选修数据库的学生名单 中专网络技术报告 被流放的费格雷六零数据库 国家网络安全宣传周短片 数据库docker技术 儿童网络安全知识漫画手抄报 软件开发培训从哪里入手 服务器 网络安全状况 华为服务器批量下发bios 计算机网络技术运行操作 连锁软件分店是否独立数据库 十二届广交会网络安全保障 金蝶服务器无效未启动 高中网络技术知识点归纳总结 阿里云的服务器安全 控制数据库技术 铁路供电网络安全防护装置厂家 影像数据库文件未就绪 恩商网络技术有限公司怎么样 网络安全法规定多少日拘留 军用加固服务器厂家 数据库及安全管理系统 中职高考计算机数据库 逃离塔科夫局域网交易服务器 广东圆心网络技术 数据库主关键字怎么 dell 服务器启动声音 网络安全执着发展之路 网关服务器未开怎么解决
0