class Foo {
public:
int a = 1;
int b = 2;
};
int main() {
Foo foo;
cout << &Foo::a << endl;//output 1
cout << &Foo::b << endl;//also output 1
}
Run Code Online (Sandbox Code Playgroud)
我们知道指向成员数据的指针应指出与对象起始地址的相对偏移量,但正如示例所示,指向Foo :: a和Foo :: b的指针都得到了a 1.有人能解释这里发生了什么吗?
首先,指向成员的指针不需要实现为与"对象的起始地址"(不是语言标准的一部分的概念)的偏移.事实上,某些类型的成员指针无法像这样实现.
你所看到的只是简单的basic_ostream::operator<<(bool).指向成员的指针不能隐式转换为许多其他类型,但可以将它们转换为bool.在1你看到的仅仅是你通过一个非空成员指针的指示.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |