这个尺寸是怎么计算的
How is this size computed?
本文关键字:计算 更新时间:2023-10-16
5.1.1/2规定:
关键字
this
命名指向对象的指针调用非静态成员函数(9.3.2)或非静态数据对成员的初始值设定项(9.2)进行评估。
和:
与其他上下文中的对象表达式不同,
*this
不是为了类成员访问的目的,需要是完整类型(5.2.5)在成员功能体之外。
以下代码打印8
:
#include <cstddef>
#include <iostream>
struct Test
{
std::size_t sz = sizeof(this->sz);
};
int main()
{
std::cout << Test{}.sz;
}
5.3.3表示:
操作数是一个表达式,该表达式是未赋值的操作数(第5条),或带括号的类型id。
sizeof
操作员应不能应用于具有函数或不完整的表达式类型
CCD_ 5具有相同的结果。
在这种情况下,this->
是否被视为无操作,并且它本质上等同于sizeof(sz)
?
在这种情况下,
this->
是否被视为无运算,并且它本质上等同于sizeof(sz)
?
没错
this->sz
的类型是std::size_t
,在该上下文中是一个完整的类型。
*this
的类型在这里是而不是完整的,但你引用了一段话,说明了为什么这无关紧要,我们可以直接分析sz
。
因此,this->
对表达式的语义没有实际影响,无论是好是坏。
正如Sergey所说,有一种情况下,使用this->
进行成员访问会有所不同(模板基础!),但这不是其中之一。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 计算平均值,不包括上次得分
- 如何计算多映射中重复对的数量