C++ 创建返回对对象引用的成员函数的最简单方法

C++ 创建返回对对象引用的成员函数的最简单方法,c++,class,C++,Class,我创建了一个成员函数,用于返回对对象的引用 我可以这样做: class Foo { Foo &ref(){ return *this; } } ref通过查找此指针返回对象 是否有其他方法可以不使用此返回对象 解释原因: 我不想使用此的原因是:指针在堆栈中占据4B,而引用共享相同的内存听起来您不喜欢此,也不想取消引用任何指针。那么: class Foo { private: int dummy; public: Foo& ref() {

我创建了一个成员函数,用于返回对对象的引用

我可以这样做:

class Foo {
  Foo &ref(){
    return *this;
  }
}
ref
通过查找
此指针返回对象

是否有其他方法可以不使用
返回对象

解释原因:


我不想使用
的原因是:指针在堆栈中占据4B,而引用共享相同的内存

听起来您不喜欢
,也不想取消引用任何指针。那么:

class Foo {
  private:
    int dummy;
  public:
    Foo& ref() {
        return reinterpret_cast<Foo&>(dummy);
    }
};
static_assert(std::is_standard_layout<Foo>::value,
              "Foo must be standard-layout!");
class-Foo{
私人:
int假人;
公众:
Foo&ref(){
返回重新解释(虚拟);
}
};
静态断言(std::是标准布局::值,
“Foo必须是标准布局!”;
由于
Foo
是一个标准布局类,
dummy
是它的第一个非静态数据成员,并且没有基类,
dummy
的地址与包含
Foo
的地址相同


不用说,这是返回对象引用的一种非常愚蠢的方法,我看不出有任何理由这样做。不想写
返回*this
就像不使用
+
就想添加两个整数一样。这根本没有意义。

有什么比
返回*这个更简单的方法?我需要一些运算符(
你是说你不允许使用
这个
?有什么特别的原因吗?这就像说你想在不使用
+
的情况下添加两个整数@DMaster是你真正的问题“为什么
这个
是指针而不是引用?”?无论如何,谢谢。我不想使用
的原因是:指针在堆栈中占据4B,而引用共享相同的位置memory@DMaster这根本不对。生成的机器代码通常必须将引用的地址存储在某个位置,就像它存储指针的值一样。在某些情况下,可以优化引用是的,但指针也是如此。@DMaster你可以在这个网站上找到类似的问题,例如。,