原文:为什么const对象只能调用const成员函数,而不能调用非const成员函数?

在c 中,我们可以用const来定义一个const对象,const对象是不可以调用类中的非const成员函数,这是为什么呢 下面是我总结的一些原理。 假设有一个类,名字为test代码如下: 我们知道c 在类的成员函数中还会隐式传入一个指向当前对象的this指针,所以在test类中,实际的print函数应该是这样的void print test this ,这代表一个指向test对象的指针this被 ...

2016-06-02 17:40 0 7281 推荐指数:

查看详情

c++之const成员函数强制调用const成员函数

我们都知道const成员函数只能调用const成员函数 为了实现constconst两个版本,我们选择使用重载,但是里面的内容可能是相同的,为了代码复用可以: 使用 const_cast<SeqList&>(this),把const版本的this转化为 ...

Thu May 28 05:49:00 CST 2020 0 636
【OOP】C++ const成员函数

预备知识 1、代码转换分析技巧 在早期某些编译器会将C++代码翻译为C代码,然后使用C编译器生成可执行文件。其中翻译的一个转化就是:将this指针显式添加到成员函数的第一个参数位置上,并在成员函数调用时,自动将对象的地址传递给参数this。 这个过程用如下代码解释 ...

Mon May 15 21:04:00 CST 2017 1 4414
C++的const成员函数

转自:http://blog.csdn.net/lihao21/article/details/8634876 我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误。例如, [cpp] view ...

Sat May 13 04:16:00 CST 2017 0 13288
为什么静态成员函数不能是const(转)

static在c++中的第五种含义:用static修饰不访问静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。 不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数 ...

Tue Oct 25 07:11:00 CST 2016 0 1546
C++ this指针和const成员函数

this指针 this指针:成员函数通过一个名为this的隐式形参来访问调用它的那个对象。this由调用成员函数对象的地址初始化。 this是一个常量指针,因为this总是指向“这个”对象,不允许改变this中保存的地址。 const成员函数 ...

Fri Mar 22 22:20:00 CST 2019 0 546
c++之const修饰成员函数

函数成员函数后加const后我们称这个函数为常函数; 常函数不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const对象只能调用函数函数: 说明:红色标注的是编译报错 ...

Wed Dec 25 21:12:00 CST 2019 0 1210
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM