我正在学习使用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();
}
输出是:FFFFFFE8
在此之后的代码,我能理解SOME_VALUE是数值型。我也测试sizeof(SOME_VALUE)和输出是4.但是,如果SOME_WHAT是数字,它如何改变为对象指针?以及如何对象指针可以减去整数?
我记得C++有'typeof'函数。检查它,是的。但它是主要的延伸。 – gaussblurinc