第7章 类
1. 引入const成员函数(C++ Primer P231-232)
C++类的常量对象是无法调用非const成员函数的,如果想让常量对象调用某个成员函数,必须声明成const:
2. 一个类的尾后const成员函数如果返回*this,那么其返回类型必然是const
类名 & 前面这个const是不能少的.否则无法通过编译.
...
分类:
编程语言 时间:
2015-03-07 06:19:34
阅读次数:
215
声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义的时候都应该放const关键字。 任何不会修改数据成员的函数都...
分类:
编程语言 时间:
2015-03-06 16:13:16
阅读次数:
171
本文结论: const对象、指向const对象的指针或引用只能用于调用其const成员函数。实例说明:class A{public: void mf1(){ cout<<"Function Call"<<endl; } void mf2() const{ cout<<"const F...
分类:
其他好文 时间:
2015-03-04 23:57:00
阅读次数:
233
数据成员的值反应了对象在程序运行某个时刻的状态。数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用。
但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改。所以,对象的成员函数被分成了两类:
1. 修改对象状态的成员函数;
2. 获取对象状态的成员函数;
而const 成员函数就是为第2个功能而设计。尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这...
分类:
编程语言 时间:
2015-03-02 13:14:59
阅读次数:
149
1? 成员函数可以声明成const函数(声明后加const)
2? 对于const对象,只能调用const成员函数
3? Const函数和非const函数可以形成重载
4? 对于非const对象的函数调用优先选择非const成员函数
5? 对于类中的mutable数据成员,可以被const成员函数修改
//
// main.cpp
// Const
//...
分类:
编程语言 时间:
2015-01-24 17:25:56
阅读次数:
192
const的美妙在于它能让你规定一个语义上的常量。应该尽可能地在代码中使用它,全局作用域,命名空间内,类里面都可以使用, 不管是静态还是非静态的对象,你都可以使用它。
一个const对象,它只能调用const函数。因为非const函数,可能会修改这个对象。因此,如果一个成员函数,它不会修改任何非static 成员数据,你应该声明为const。比如:
class String {
...
分类:
编程语言 时间:
2015-01-19 21:00:33
阅读次数:
179
1、C++中const有什么用?
不要一听到const就说是常量,这样给考官一种在和一个外行交谈的感觉。应该说const修饰的内容不可改变就行了, 定义常量只是一种使用方式而已,还有const数据成员,const参数, const返回值, const成员函数等, 被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
另外const优于c中的宏,const是...
分类:
编程语言 时间:
2015-01-08 15:19:29
阅读次数:
122
当一个类只有const成员函数的时候,非const对象也可以调用const成员函数:
// ConstTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
using namespace std;
class A
{
public:
A( void )
{
}...
分类:
其他好文 时间:
2014-12-31 16:16:08
阅读次数:
184
我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。能不能同时用static和const修饰类的称冠函数?
不能。C++编译器在实现const成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this...
分类:
编程语言 时间:
2014-12-31 13:10:42
阅读次数:
176
我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。能不能同时用static和const修饰类的称冠函数?
不能。C++编译器在实现const成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this...
分类:
编程语言 时间:
2014-12-31 10:02:05
阅读次数:
154