这个大小是如何计算的?

uh *_*per 4 c++

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;
}
Run Code Online (Sandbox Code Playgroud)

5.3.3说:

操作数是一个表达式,它是一个未评估的操作数(第5章),或带括号的type-id.的sizeof操作者不得应用于具有功能或不完整的类型的表达式...

sizeof this->sz 有相同的结果.

this->在这种情况下被视为无操作,它基本上相当于sizeof(sz)

Lig*_*ica 9

this->在这种情况下被视为无操作,它基本上相当于sizeof(sz)

那就对了.

this->szis 的类型,是std::size_t该上下文中的完整类型.

该类型*this完全在这里,但你引用的通道,说明为什么这不要紧,我们可以直接通过去分析sz具体.

因此this->,无论是好是坏,对表达的语义都没有实际影响.

正如谢尔盖所​​说,有一种情况是使用this->成员访问会产生影响(模板基础!),而这不是其中之一.