C++ 如何才能分配“;这";指向字段的指针?

C++ 如何才能分配“;这";指向字段的指针?,c++,class,pointers,this,C++,Class,Pointers,This,据我所知,“this”指针是编译器插入函数的参数,如下所示: class Sample { private: int a; public: void setA(int a) { this->a = a; } }; Sample ob; ob.setA(5); -> ob.setA(&ob, 5); class Sample { private: int a; public: void setA(Sample* thi

据我所知,“this”指针是编译器插入函数的参数,如下所示:

class Sample {
private:
    int a;
public:
    void setA(int a) {
        this->a = a;
    }
};

Sample ob;
ob.setA(5); -> ob.setA(&ob, 5);

class Sample {
private:
    int a;
public:
    void setA(Sample* this, int a) {
        this->a = a;
    }
};
顺便说一句,我发现一些让人困惑的代码将“this”指针指定给const字段。(请参阅下文)

如果“this”指针确实是通过函数传递的,那怎么可能呢? 我不知道。。
你能给我一些建议吗?非常感谢您的回复。

类的属性(
Test.Test,在本例中为
)由编译器生成的代码隐式初始化。有一个函数,它确实接收
这个
指针,但它都是由编译器生成的,这就是为什么您看不到它的原因。

此语法:

Test* const test = this;
来自C++11。它意味着“在任何尚未显式初始化
测试
的非复制构造函数中,将
测试初始化为


因此,此代码在构造函数内执行,
完全有效。但是,进行这种初始化的好处还不清楚,依赖于
test
的使用可能会很危险。

您想解决什么问题?等号并不总是意味着赋值。它可能意味着许多不同的事情,这取决于上下文。在本例中,它的意思是“初始化”。这里有另一种让人困惑的方式,将值“赋值”给常量变量:
const int a=5好。。我只是想知道它是如何工作的。
Test*const Test=this不是作业。这是一个初始化。“显式”一词似乎不对:在一些已经隐式初始化了
test
的构造函数中,它不会将
test
初始化为
this
:编译器生成的复制构造函数会很高兴地复制
test
@hvd的值,当然,我不是指复制构造函数。让我说清楚。
Test* const test = this;