私は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が数値の場合、オブジェクトポインターにどのように変更できますか?そして、オブジェクトポインタはどのようにして整数にマイナスすることができますか?