【问题标题】:*this and const member functions*this 和 const 成员函数
【发布时间】:2023-03-14 16:27:01
【问题描述】:

是否可以使用 this 指针将数据从调用对象分配给在 const 成员函数中声明的对象?比如:

(假设我已经构建了 SomeClass)

void func() const
{
    SomeClass object1;

    object1 = *this;
}

int main()
{
    SomeClass object2;

    object2.func();

    return 0;
}

我知道上面的功能是没有意义的。我只是想知道使用 *this 是否合法。

【问题讨论】:

  • 你不能直接编译代码看看会发生什么吗?
  • 您只是从*this 对象中读取数据,所以看不出它为什么会出现问题。
  • ideone.com 是你的朋友 :)
  • ideone.com 很棒!谢谢卡尔。是的,看起来这很好。我的程序中出现编译器错误,因为我忘记了二进制范围解析运算符,并且我认为它与 const 成员函数有关,因为我是第一次使用它们。感谢您的回复。

标签: c++


【解决方案1】:

只要 SomeClass 有一个复制赋值运算符,这段代码就可以了。成员函数上的 const 声明您不会更改对象的状态: func() 不这样做,因此它是合法代码。如果你足够努力,有很多方法可以颠覆 const,但是,这不是其中之一。

【讨论】:

    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多