Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ->成员变量如何实现?_C++ - Fatal编程技术网

C++ ->成员变量如何实现?

C++ ->成员变量如何实现?,c++,C++,如果我在一个成员函数中,打个招呼,我调用这个->成员变量 这是如何实现的?这是不是得到这个指针的地址,然后以某种方式偏移到membervariable,然后取消引用?我很想了解这方面的机制 Blair这是指向成员函数所属类的当前实例的指针。它隐式地传递给每个成员函数,静态函数调用除外 此->memberVariable与任何其他指针取消引用类似,只是*this.memberVariable的快捷方式。这是指向成员函数所属类的当前实例的指针。它隐式地传递给每个成员函数,静态函数调用除外 此->me

如果我在一个成员函数中,打个招呼,我调用这个->成员变量 这是如何实现的?这是不是得到这个指针的地址,然后以某种方式偏移到membervariable,然后取消引用?我很想了解这方面的机制

Blair

这是指向成员函数所属类的当前实例的指针。它隐式地传递给每个成员函数,静态函数调用除外

此->memberVariable与任何其他指针取消引用类似,只是*this.memberVariable的快捷方式。

这是指向成员函数所属类的当前实例的指针。它隐式地传递给每个成员函数,静态函数调用除外


此->memberVariable与任何其他指针解引用类似,只是*this.memberVariable的快捷方式。

对于每个成员函数,“this”是隐式传递的参数。。。因为成员函数是共享的,所以这是区分调用函数的对象的方法…记住,非虚拟函数在编译时链接到每个成员函数。

“这”是隐式传递的参数。。。因为成员函数是共享的,所以这是区分调用函数的对象的方法…记住非虚拟函数在编译时链接

这只是成员函数的一个隐藏参数。就像你说的,它的工作原理和其他指针一样。您应该查看编译器生成的汇编代码,它是权威资源。它的可能副本只是成员函数的一个隐藏参数。就像你说的,它的工作原理和其他指针一样。您应该查看编译器生成的汇编代码,它是权威资源。可能与。。。这个->memberVariable是memberVariable的一个长切口。但是代码可读性好,代码可读性差。暗示不存在的语义。更好的代码可读性是一个合理的命名方案,其中成员的标识符与参数不同。@Collin:我想我们不再使用Python了,Toto。我必须同意@JohnDibling的观点-在一些情况下,这个->可以提供有意义的消歧,但大多数时候,它只是无用的噪音。@Collin:编译器不在乎——但编译器应该是次要目标;您的主要目标应该是其他程序员。如果要编写Python,请编写Python。如果你正在写C++,写C++。不要试图在C++中编写Python,因为编译器并没有阻止你。这个->memberVariable是memberVariable的一个长切口。但是代码可读性好,代码可读性差。暗示不存在的语义。更好的代码可读性是一个合理的命名方案,其中成员的标识符与参数不同。@Collin:我想我们不再使用Python了,Toto。我必须同意@JohnDibling的观点-在一些情况下,这个->可以提供有意义的消歧,但大多数时候,它只是无用的噪音。@Collin:编译器不在乎——但编译器应该是次要目标;您的主要目标应该是其他程序员。如果要编写Python,请编写Python。如果你正在写C++,写C++。不要试图在C++中编写Python,因为编译器并没有阻止你。