gpt4 book ai didi

c++ - 那么 "this"的类型是什么?为什么 "this"不是左值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:36 29 4
gpt4 key购买 nike

假设对象是

class A {
public : void Silly(){
this = 0x12341234;
}

我知道我会得到编译器错误““this”不是左值。”但那也不是暂时的。那么“this”的假设声明是什么?

编译器:Mac 上的 GCC 4.2 编译器。

最佳答案

对于某些 X 类,this类型为 X* this; , 但你不允许分配给它,所以即使它实际上没有类型 X *const this ,就阻止分配而言,它的行为几乎就像它一样。正式地,它是 prvalue ,这与类似整数文字的类别相同,因此尝试分配给它大致等同于尝试为 'a' 分配不同的值。或 10 .

请注意,在早期 C++ 中,this是一个左值——分配给 this被允许——你这样做是为了处理对象的内存分配,有点类似于重载 newdelete用于类(class)(当时尚不支持)。

关于c++ - 那么 "this"的类型是什么?为什么 "this"不是左值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341607/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com