c++ 在类函数后加const的意义
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。
1、非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)
2、表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,     任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);
3、唯一的例外是对于mutable修饰的成员。加了const的成员函数可以被非const对象和const对象调用,但不加const的成员函数只能被非const对象调用
char getData() const{
		return this->letter;
}
c++ 函数前面和后面 使用const 的作用:
- 前面使用const 表示返回值为const
 - 后面加 const表示函数不可以修改class的成员
 
请看这两个函数
const int getValue();
int getValue2() const;
/*
 * FunctionConst.h
 */
#ifndef FUNCTIONCONST_H_
#define FUNCTIONCONST_H_
class FunctionConst 
{
public:
    int value;
    FunctionConst();
    virtual ~FunctionConst();
    const int getValue();
    int getValue2() const;
};
#endif /* FUNCTIONCONST_H_ */
源文件中的实现
/*
 * FunctionConst.cpp
 */
#include "FunctionConst.h"
FunctionConst::FunctionConst():value(100)
{
    // TODO Auto-generated constructor stub
}
FunctionConst::~FunctionConst()
{
    // TODO Auto-generated destructor stub
}
const int FunctionConst::getValue()
{
    return value;//返回值是 const, 使用指针时很有用.
}
int FunctionConst::getValue2() const
{
    //此函数不能修改class FunctionConst的成员函数 value value = 15;//错误的, 因为函数后面加 const return value; 
}												
											c++ 在类函数后加const的意义的更多相关文章
- [Reprint]C++函数前和函数后加const修饰符区别
		
c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...
 - C++函数前和函数后加const修饰符区别
		
class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...
 - C++ 成员函数前和函数后加const修饰符区别
		
博客转载自: https://www.iteblog.com/archives/214.html 分析以下一段程序,阐述成员函数后缀const 和 成员函数前const 的作用 #include< ...
 - C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
		
http://blog.csdn.net/gmstart/article/details/7046140 在C++的类定义里面,可以看到类似下面的定义: 01 class List { 02 priv ...
 - C++ 函数后加const
		
1.非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误)2.表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中, 任意修改它所在的类的成员的操作都是 ...
 - 成员函数定义后面加 const 的意义
		
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字 ...
 - cpp 常量函数(函数后加const)
		
const用在成员函数后 主要是针对类的const 对象 如: class Text{ public: void printconst(void)const{cout<<" ...
 - 函数名后加const
		
通过把类成员函数声明为const 以表明它们不修改类对象. 任何不会修改数据成员的函数都应该声明为const类型.如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员 ...
 - C++: C++函数声明的时候后面加const
		
C++: C++函数声明的时候后面加const 转自:http://blog.csdn.net/zhangss415/article/details/7998123 非静态成员函数后面加const(加 ...
 
随机推荐
- RemoTing 搭建简单实现
			
今天对C# Remoting进行了初步的学习,废话不说... RemotingModel: Talker.cs using System;using System.Collections.Generi ...
 - rabbitMQ 问题
			
1.有时候在学习或者测试的时候,发现我在一个EXCHANGE 上面绑定了多个通道,这些通道的ROUTING_KEY 各不相同.但是从发送端 发到EXCHANGE 时,却在别的通道上面也收到了该消息, ...
 - js 实时计算文本框字数限制
			
$.fn.myTarea = function(){ return this.each(function(){ $(this).bind('input propertychange', functio ...
 - Delphi ResourceString的用法
			
在Delphi编程的那段“古老”的日子里(就是在版本4之前),在程序中使用字符串有两个基本的方法.你可以使用字符串将它们嵌入到源程序中,例如: MessageDlg( 'Leave your stin ...
 - Kubernetes重大漏洞?阿里云已第一时间全面修复
			
近日,Kubernetes社区发现安全漏洞 CVE-2018-1002105,阿里云容器服务已在第一时间完成全面修复,敬请广大用户登录阿里云控制台升级Kubernetes版本. 目前Kubernete ...
 - WPF ListBox 横向排列
			
WPF ListBox 横向排列 如果只是单纯的让ListBox可以横向配列,这样很简单,只需要更改ListBox的ItemsPanel模板就可以,例如: <ListBox><L ...
 - Yii2 使用十一 在设置enablePrettyUrl时候,defaultAction的设置方法
			
启用美化Url的功能 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableS ...
 - (转)ubuntu 下安装mysql5.5.30的过程以及遇到的问题
			
转:http://blog.chinaunix.net/uid-27103408-id-3280584.html 由于实验需要安装mysql,当然我们可以通过sudo apt-get install ...
 - mac 堡垒机传文件
			
安装zssh brew install zssh 上传文件 zssh登陆上跳板机 在跳板机上ssh到相应服务器 在服务器上cd至相应要放上传文件的目录 rz -bye //在远程服务器的相应目录上运行 ...
 - Codeforces 1119E Pavel and Triangles (贪心)
			
Codeforces Global Round 2 题目链接: E. Pavel and Triangles Pavel has several sticks with lengths equal t ...