Usi*_*ten 0 c++ struct pointers class this
如上所述,this当在类中定义的结构中调用时,指针如何起作用?假设我有以下代码:
class A {
public:
struct {
void bar() { std::cout << this << std::endl; }
} foo;
};
int main() {
A a; a.foo.bar();
std::cout << &a << std::endl;
std::cout << &a.foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这会产生这个输出:
0x62fe9f
0x62fe9f
0x62fe9f
Run Code Online (Sandbox Code Playgroud)
a.foo与之共享同一个地址a,如何才能访问this指针foo?
使用this->foo引发错误:
test.cpp:20:23: error: 'struct A::<anonymous>' has no member named 'foo'
如果对象"启动",地址大多只是内存的位置.需要多少补偿成员然后由类定义定义.
所以上课A"开始" 0x62fe9f.
在课程的开头A是成员foo,因为它前面没有任何东西,它也有地址0x62fe9f等.
将类更改为时
class A {
public:
int i;
struct {
void bar() { std::cout << this << std::endl; }
} foo;
};
Run Code Online (Sandbox Code Playgroud)
您shloud看到&a.i并&a具有相同的地址和&a.foo应&a + sizeof(int)
(注意:它可能比sizeof(int)其他情况也有所不同,因为如何设置填充.这只是一个简单的例子.你不应该在实际代码中依赖它)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |