Far*_*ian -2 c++ oop class sizeof
为什么sizeof在这段代码中为同一个对象返回两个不同的答案?
class Test {
public:
int operator!() const {
return sizeof(this);
}
};
int main() {
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是 1 | 8
this是指向类的当前对象的指针Test。因此operator !返回指针sizeof( obj )的大小,而是空类Test或类的对象的大小,在 C++ 中可能不等于零。
更改运算符,如下面的程序所示,您将获得预期的结果
#include <iostream>
class Test {
public:
size_t operator!() const {
return sizeof( *this );
// ^^^^^
}
};
int main()
{
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
Run Code Online (Sandbox Code Playgroud)
程序输出是
1 | 1
Run Code Online (Sandbox Code Playgroud)