同一对象对 `sizeof` 的不同答案
Different answers for `sizeof` for same object
为什么在此代码中 sizeof
returns 对同一个对象有两个不同的答案?
class Test {
public:
int operator!() const {
return sizeof(this);
}
};
int main() {
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
上面代码的输出是1 | 8
this
是指向classTest
的当前对象的指针。所以operator !
returns指针的大小而sizeof( obj )
是空 class Test
或 class 的对象的大小,在 C++ 中可能不等于零。
按照下面的程序更改运算符,您将得到预期的结果
#include <iostream>
class Test {
public:
size_t operator!() const {
return sizeof( *this );
// ^^^^^
}
};
int main()
{
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
程序输出为
1 | 1
为什么在此代码中 sizeof
returns 对同一个对象有两个不同的答案?
class Test {
public:
int operator!() const {
return sizeof(this);
}
};
int main() {
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
上面代码的输出是1 | 8
this
是指向classTest
的当前对象的指针。所以operator !
returns指针的大小而sizeof( obj )
是空 class Test
或 class 的对象的大小,在 C++ 中可能不等于零。
按照下面的程序更改运算符,您将得到预期的结果
#include <iostream>
class Test {
public:
size_t operator!() const {
return sizeof( *this );
// ^^^^^
}
};
int main()
{
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
程序输出为
1 | 1