virtual IsEmpty() const=0中的const有什么用?

来源:百度知道 编辑:UC知道 时间:2024/05/24 12:39:11

后面加个const 表明该函数不会改名成员函数的值!该函数可以被常量对象访问(const)。
注意 加了const 与不加const的函数是两个不同的函数!
用个例子说明其区别:

#include <iostream>
class A
{
public:
void empty()
{
std::cout<<"call empty()\n";
}

void empty() const
{
std::cout<<"call empty() const \n";
}
};
void main()
{
const A a; //a常量对象,其只能访问常量函数
a.empty(); //访问 empty() const; 如果A中没有 empty() const 函数,编译器报错
A b; //非常量对象
b.empty(); //访问 empty()
}