C++ 常量和非常量成员函数之间的主要区别
两者的区别是什么C++ 常量和非常量成员函数之间的主要区别,c++,C++,两者的区别是什么 void showDist() const { } 及 const的好处是什么?const表示您不会修改对象的任何成员变量(或者更准确地说,*此)。请注意,此与const this不同常量指针和非常量指针不兼容 如果有const对象,则必须提供const重载 class Foo { public: // Remove this and see the compiler error void foo() const { std::c
void showDist() const {
}
及
const
的好处是什么?const
表示您不会修改对象的任何成员变量(或者更准确地说,*此
)。请注意,此
与const this
不同<代码>常量指针和非常量指针不兼容
如果有const
对象,则必须提供const重载
class Foo
{
public:
// Remove this and see the compiler error
void foo() const
{
std::cout << "Const.";
}
void foo()
{
std::cout << "Non-const.";
}
};
int main(int argc, char* argv[])
{
const Foo foo;
foo.foo();
}
class-Foo
{
公众:
//删除此选项并查看编译器错误
void foo()常量
{
std::cout考虑一个类X
唯一的区别是:
在非常量
成员函数中,此
的类型为:
X*
const X*
在const
成员函数中,此的类型为:
X*
const X*
就这样。
因此,const
成员函数
不允许修改类X
的任何成员,但可变的成员除外
不允许调用类X
的任何非const
成员函数
用外行的话说:用适当的常量意识编写的类更有用(在更多情况下可用)比那更重要not@imsoconfusedFitting name.谢谢,我刚才的见解让我大吃一惊,非常量指针可能被分配给常量指针,所以说它们不兼容是一种过于简单的说法。为了彻底起见,常量对象可能修改了它的可变
数据成员。