我创建了一个返回对象引用的成员函数。
我可以这样做:
class Foo {
Foo &ref(){
return *this;
}
}
ref
通过查找this
指针返回对象。
有没有其他方法可以在不使用this
的情况下返回对象?
解释原因:
我不想使用this
的原因是:指针在堆栈中占用4B,而引用共享相同的内存
答案 0 :(得分:1)
听起来你不喜欢this
和你不想取消引用任何指针。怎么样:
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!");
因为Foo
是标准布局类而dummy
是它的第一个非静态数据成员且没有基类,所以dummy
的地址与Foo
的地址相同包含return *this;
。
毋庸置疑,这是一种非常愚蠢的方式来返回对象的引用,我看不出任何可能的理由这样做。不想写+
就像想要在不使用<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pack.saltriver"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".autostart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".hello"></activity>
<service android:enabled="true" android:name=".service" />
</application>
</manifest>
的情况下添加两个整数。它完全没有任何意义。