Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 常量和非常量成员函数之间的主要区别_C++ - Fatal编程技术网

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.谢谢,我刚才的见解让我大吃一惊,非常量指针可能被分配给常量指针,所以说它们不兼容是一种过于简单的说法。为了彻底起见,常量对象可能修改了它的
    可变
    数据成员。