const函数总结(author:mingyuanonline#gmail.com)

2024-03-23 12:38

本文主要是介绍const函数总结(author:mingyuanonline#gmail.com),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*                 const函数总结(author:mingyuanonline#gmail.com)
* 声明const成员函数,只需在函数参数表和函数体之间加const关键字即可(此句有改动,原始版本见原作者博客)
* 注意,我们只能对类成员函数这么做,对普通全局函数不能这么做。
* 仅当某个函数是类成员时,将其声明为const才有意义,其作用是使该函数中的this指针成为const,
* 这意味着我们不能在该函数的定义内在赋值语句左边写上类的数据成员——那将被编译器标记为错误。
* const成员函数不能调用同类的非const成员函数,因为那样也有可能修改当前对象。
* 当我们将某个对象声明为const之后,该对象可以调用的成员函数也都必须是const,否则程序将不能编译。
* 注:以上参考http://blog.csdn.net/lidh04/archive/2008/07/27/2720309.aspx
*
* 总结一下即:
* 0.声明const成员函数,只需在函数参数表和函数体之间加const关键字即可
* 1.const函数声明只在类中有意义只能出现在类中,作为类的成员函数
* 2.const成员函数函数只能调用const成员函数
* 3.非const函数可以调用const成员函数
* 4.非const对象可以调用const成员函数
* 5.const对象只能调用const成员函数
* 6.const对象可以访问静态成员函数
*/
#include
#include
using namespace std;
class class_const_member_function
{
public:
   class_const_member_function(string name="no name"):_name(name){};
   string display(){return _name;}//非const成员函数
   void display_const(string name)const{cout< < //void const_try_to_modify_member_variable()const{_name="99";}//const成员函数试图修改成员变量,出错!
   void const_call_const()const{display_const("const_call_const");}//const成员函数调用const成员函数
   //void const_call_nono_const_function()const{display();}//const函数调用非const,出错!
   void nono_const_call_const(){display_const("nono_const_call_const");}//非const成员函数调用const成员函数
   static void print(string whos){cout< <<"'s "<<_school<
private:
   string _name;
   static string _school;
};
string class_const_member_function::_school("school");
void const_member_function_test()
{
   class_const_member_function mem;//声明一个非const对象
   cout< < mem.display_const("name");//非const对象调用const成员函数
   mem.print("mem");
  
   const class_const_member_function const_mem;//声明一个const对象
   const_mem.display_const("const_name");//const对象调用const成员函数
   //const_mem.display();//const对象调用非const成员函数,出错!
   const_mem.print("const_mem");//const对象访问静态成员函数
  
   class_const_member_function::print("class");//类名调用静态函数
  
}

这篇关于const函数总结(author:mingyuanonline#gmail.com)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838343

相关文章

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

Python容器转换与共有函数举例详解

《Python容器转换与共有函数举例详解》Python容器是Python编程语言中非常基础且重要的概念,它们提供了数据的存储和组织方式,下面:本文主要介绍Python容器转换与共有函数的相关资料,... 目录python容器转换与共有函数详解一、容器类型概览二、容器类型转换1. 基本容器转换2. 高级转换示

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

pandas使用apply函数给表格同时添加多列

《pandas使用apply函数给表格同时添加多列》本文介绍了利用Pandas的apply函数在DataFrame中同时添加多列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、Pandas使用apply函数给表格同时添加多列二、应用示例一、Pandas使用apply函

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

Python中Namespace()函数详解

《Python中Namespace()函数详解》Namespace是argparse模块提供的一个类,用于创建命名空间对象,它允许通过点操作符访问数据,比字典更易读,在深度学习项目中常用于加载配置、命... 目录1. 为什么使用 Namespace?2. Namespace 的本质是什么?3. Namesp

MySQL中如何求平均值常见实例(AVG函数详解)

《MySQL中如何求平均值常见实例(AVG函数详解)》MySQLavg()是一个聚合函数,用于返回各种记录中表达式的平均值,:本文主要介绍MySQL中用AVG函数如何求平均值的相关资料,文中通过代... 目录前言一、基本语法二、示例讲解1. 计算全表平均分2. 计算某门课程的平均分(例如:Math)三、结合

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4