是否打印指向已定义 int 的成员指针



假设我有以下代码:

#include <iostream>
struct Mine
{
int a;
int b;
};

int main()
{
int Mine::* memberPointerA = &Mine::a;
int Mine::* memberPointerB = &Mine::b;

std::cout << memberPointerA;
std::cout << "n";
std::cout << memberPointerB;
}

当我用Microsoft视觉C++运行它时 (2015(

我得到以下输出

1
1

我期望的输出更像这样:

1
2

因此,这就引出了一个问题:这种成员指针定义的打印行为吗?

有一个定义的从指针到bool的转换。 由于成员变量指针不NULL,它们的计算结果为真,打印为1

手头的关键问题是指向成员的指针不能转换为void*,这是通常处理打印指针的重载所需要的。

因此,使用下一个最佳转换,即转换指针>bool。这两个指针都不是空指针,因此您可以获得看到的输出。

如果您尝试打印"普通"指针(而不是指向成员的指针(,您将获得一些与最初预期的相同的输出。

相关内容

  • 没有找到相关文章

最新更新