代码之家  ›  专栏  ›  技术社区  ›  sdasdadas

如何判断方法是否修改了类?

c++
  •  0
  • sdasdadas  · 技术社区  · 5 年前

    print() act() ; 前者不修改类的内部(即变量 i

    class Example {
        int i;
    
        void act() { i++; };
        void print() { };
    

    这在本例中是显而易见的,但是对于较长的方法,或者定义和声明已分离的方法,哪些方法可以更改对象并不明显。有没有一种方法可以显式地表示方法是非修改的?

    (作为另一种语言的例子,在C中,我可能会传递一个指向对象的指针。如果函数是非修改的,我会传递一个常量指针。)

    1 回复  |  直到 5 年前
        1
  •  5
  •   Remy Lebeau    5 年前

    有没有一种方法可以显式地表示方法是非修改的?

    const 例如:

    void print() const;
    

    这将标志着 this 指向 常数 对象(即 const Example *this ). 任何试图通过 指针将导致编译器错误。