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你可以在这个网站上找到类似的问题,例如。,