我正在研究 C++ 中的铸造,之后的代码对我来说很神奇。
#include <iostream>
using namespace std;
class Base {
public:
virtual void f() { }
};
#define SOME_VALUE 8
int main() {
cout << SOME_VALUE <<endl;
getchar();
}
输出为:8
代码很简单,但是什么类型的 SOME_VALUE 呢?int、double 还是 char?
之后更复杂:
#include <iostream>
using namespace std;
class Base {
public:
virtual void f() { }
};
#define SOME_VALUE 8
int main() {
cout << (Base*)SOME_VALUE-SOME_VALUE <<endl;
getchar();
}
输出为:FFFFFE8
按照这段代码,我可以理解 SOME_VALUE 是数字类型。我还测试了 sizeof(SOME_VALUE) 并且输出是 4。但是如果 SOME_WHAT 是数字,它如何更改为对象指针?以及对象指针如何减去整数?