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

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>