【问题标题】:C++ Passing this to a non Const FunctionC++ 将此传递给非 Const 函数
【发布时间】:2016-12-12 16:17:28
【问题描述】:

示例类:

int i;

 void Classname::a1(const Classname& var){

    var.a2(*this);

 }

 void Classname::a2(const Classname& var){

    var.i = 100;

 }

如何在不向 a2 添加 const 的情况下完成这项工作?

【问题讨论】:

  • 如果要更改,为什么要使用 const 引用?

标签: c++ pointers this


【解决方案1】:
  • 简短的回答 - 你不应该。

    varconst,这意味着您根本不应该更改任何内容; var.i=100 将会对其他人产生非常意想不到的后果。

  • 更长的答案 - 删除 const,或使 i 可变。

    mutable 关键字表示即使对象是const 也可以更改变量。或者,通过将其设为非const,您可以更改它,人们可以期望他们的对象被修改。

  • 真的很讨厌的答案 - 扔掉const-ness。

    我什至不打算充实这部分,因为它太可怕了,这样做会导致a velocoraptor attacking you where you sit

【讨论】:

  • 不利的一面是它也会增加内存使用量,但是是的,也可以使用
  • 是的,我完全同意。
猜你喜欢
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
相关资源
最近更新 更多