const成员函数和const对象的调用关系

代码:

class A{
private:
	int a;
public:
	void set()
	{
	}
<span style="white-space:pre">	</span>void set () const
<span style="white-space:pre">	</span>{
<span style="white-space:pre">	</span>}
};

常量版本的函数:void set()const {};

非常量版本的函数:void set (){};

const类型的对象:const A object1;

非const 类型的对象:A object2;

那么:

object2可以调用const类型的成员函数和非const类型的成员函数;

而object1只能调用const类型的函数,不能调用非const类型的函数。

总结一句话:const对象只能调用const函数,非const对象可以随便调用。

上面的代码实现了set函数的重载,那么,对于上述的object1和object2,他们在调用set函数时,就会自动根据自己是const类型的还是非const类型的对象,来选择性地调用set函数。

即:

object1.set();//调用的是void set ()const;

object2.set();//调用的是void set ();

时间: 2024-08-07 04:36:32

const成员函数和const对象的调用关系的相关文章

C++ Primer 学习笔记_24_类与数据抽象(10)--static 与单例模式、auto_ptr与单例模式、const成员函数、const 对象、mutable修饰符

C++ Primer 学习笔记_24_类与数据抽象(10)--static 与单例模式.auto_ptr与单例模式.const成员函数.const 对象.mutable修饰符 前言 [例]写出面向对象的五个基本原则? 解答:单一职责原则,开放封闭原则,依赖倒置原则,接口隔离原则和里氏替换原则 里氏替换原则:子类型必须能够替换他们的基类型. 设计模式分为三种类型:创建型模式.结构型模式和行为型模式 一.static 与单例模式 1.单例模式 单例模式的意图:保证一个类仅有一个实例,并提供一个访问它

c++中的const参数,const变量,const指针,const对象,以及const成员函数

const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能.const 只能修饰输入参数: 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地

C++中const对象和const成员函数

1?  成员函数可以声明成const函数(声明后加const) 2?  对于const对象,只能调用const成员函数 3?  Const函数和非const函数可以形成重载 4?  对于非const对象的函数调用优先选择非const成员函数 5?  对于类中的mutable数据成员,可以被const成员函数修改 // // main.cpp // Const // // Created by 06 on 15/1/24. // Copyright (c) 2015年 黄永锐. All right

拷贝构造函数和const成员函数

实验原因 说明如何使用const描述保护类数据不会意外修改. 编译环境 vc6sp6 + win7x64 工程下载 copyConstruction_constMemberFunction.zip 使用非const成员函数,引起的拷贝构造函数报错 [cpp] view plain copy class CStudent { /// 常量定义 public: enum {NAME_SIZE_MAX = 64}; /// 构造, 拷贝构造, 析构函数 public: CStudent(); CStu

const修饰函数参数 const修饰函数返回值 const修饰成员函数

看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是constant 的缩写,"恒定不变"的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:"Use const whenever you need". 1

const成员函数总结

const 成员函数: 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const. 所以 const 关键字对成员函数的行为作了更加明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员:没有 const 修饰的成员函数,

C++中的const成员函数

数据成员的值反应了对象在程序运行某个时刻的状态.数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用.但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改.所以,对象的成员函数被分成了两类: 1. 修改对象状态的成员函数: 2. 获取对象状态的成员函数: 而const 成员函数就是为第2个功能而设计.尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这是一个获取对象状态 的成员函数,但是有的时候在实现的时候会无意的改变数据成员的值,所以为了起到防范的目的,C+

c++ const: const 变量, const 输入参数, const 返回值, const 成员函数

看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数

【C++】const成员函数

形式: 在成员函数后面加上const限定词,表示不会修改对象内容. 例如Circle类: class Circle { double r; public: Circle(double newr) { r = newr; } double get_r() const { return r; } void set_r() { r = newr; } }; 取半径函数不会改变半径,因此加入const限定词. 此外,如果是const对象,只能调用const成员函数. const Circle c(1);