c++ - 同一对象的“sizeof”的不同答案
问题描述
为什么sizeof
在这段代码中为同一个对象返回两个不同的答案?
class Test {
public:
int operator!() const {
return sizeof(this);
}
};
int main() {
Test obj;
std::cout << sizeof(obj) << " | " << !obj;
}
上面代码的输出是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;
}
程序输出为
1 | 1
推荐阅读
- java - 在保留空格的字符串中反转每个单词中的字符
- sql-server - SQL Server 使用 group by 计算列
- objective-c - ARC 不允许将“int”隐式转换为“NSString * _Nullable”。不兼容的整数到指针的转换
- wpf - ComboBox 作为 inkcanvas 中的子项
- microsoft-graph-api - 如何在 Office 365 上获取就地存档自定义文件夹名称?
- javascript - 在 office.js excel 加载项中为单个列设置列宽
- javascript - 如何预填充 mapbox 方向 api 的起点和终点?
- list - 方案:迭代器函数一次只返回一个值
- visual-studio-2017 - 无法预览 SSRS 报告 - 嵌入式连接
- selenium - 找不到为 DesiredCapabilities 类创建的对象