0

(这不是关于重载运算符的问题。一般来说。)

我们知道使用 setter 和 getter 方法有很多很好的理由。

那么,我觉得奇怪的是,这些不是成员访问的自定义点,即如果类 A 有一个数据成员 x,那么在左值上下文中使用 x 将不仅仅是使用 x,而是调用一些方法(比如A::get_x_lvalue(),别管语法)默认为

typename std::add_reference<decltype(x)>::type A::get_x_lvalue() {  return x; }

并且可以实现为覆盖,并且类似地,当在纯右值常量中使用 x 时,将调用可覆盖

decltype(x) A::get_x_prvalue() const { return x; }

...类似于,比如说,你如何在 Javascript 中做到这一点

我的问题是:

  • 从历史上看,为什么没有将它与可定制的复制构造函数、赋值运算符和析构函数一起添加到语言中?
  • 有没有正式提出过这样的事情?如果是这样,它的状态是什么或为什么被拒绝?
  • 除了: 1. 编译速度较慢和 2. 不能“相信” my_a.x 中的时间段只是普通访问之外,这种方案是否有重大损害?
4

0 回答 0