一、作用 1、可提高程序的可读性:标识不改变数据成员的函数; 2、提高程序的可靠性:已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理; 二、注意 1、只有非静态的成员函数后才可以加const,否则会产生编译错误。 三、原理 表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意...
voidTest(constMyclass&obj) ; 1. void Test(MyClass obj) 这样声明的函数函数体内将产生MyClass类型的临时对象用于复制参数obj,而临时对象(obj的副本)的构造、复制、析构过程都将消耗时间。 为了提高效率,可以将函数声明改为void Test(MyClass &obj),因为“引用传递”仅借用一下参数的别名而已,...
非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为 const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);唯一的例外是对于 mutable修饰的成员。加了const的成员函数可以被非const对象和const对象调用,...
1.const函数内部不能修改成员变量 2.const对象不能访问非const函数 那么,函数末尾加const的作用是什么? 声明一个成员函数的时候用const关键字是用来说明这个函数是 "只读(read-only)"函数,也就是说明这个函数不会修改任何数据成员(object)。 为了声明一个const成员函数, 把const关键字放在函数括号的后面。声明和定义...
C++中类成员函数后面加const的作用,这个问题频繁出现在面试中,从我参加过的几次面试中都被涉及到,比如字节,2345浏览器等,这个问题会非常基础,而且很考验C++的基础。const的字面意思为常数,不变的,只读。 class Rabbit{ private int m_nTo; public: A() : m_nTo(0){} int getToValue()const { return m_...
这个用法一般如:class BaseGraph { public:virtual int GetArea() const =0;} class DerivedGraph :BaseGraph { ...} 在这里,GetArea()只有在各个派生类才有效(基类其实就是定义一个接口函数),而这个函数后面加const限定限定这个函数是不会修改类成员变量的。
在test函数的输出语句中,使用的变量a是test函数内定义的局部变量,因此输出的结果为局部变量a的值 作用域运算符::可以用来解决局部变量与全局变量的重名问题 示例代码: //全局变量inta =10;//1. 局部变量和全局变量同名voidtest(){inta =20;//打印局部变量acout <<"局部变量a:"<< a << endl;//打印全局变...
C++中类成员函数后面加const的作用,这个问题频繁出现在面试中,从我参加过的几次面试中都被涉及到,比如字节,2345浏览器等,这个问题会非常基础,而且很考验C++的基础。const的字面意思为常数,不变的,只读。 class Rabbit{private int m_nTo;public:A() : m_nTo(0){}int getToValue...
C++中类成员函数后面加const的作用,这个问题频繁出现在面试中,从我参加过的几次面试中都被涉及到,比如字节,2345浏览器等,这个问题会非常基础,而且很考验C++的基础。const的字面意思为常数,不变的,只读。 class Rabbit{ private int m_nTo; public: A() : m_nTo(0){} ...