gpt4 book ai didi

c++ - 如果在类中不使用 "this"会发生什么情况?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:22 24 4
gpt4 key购买 nike

假设我有以下类(class):

class foo{
public:
int someNum;
void calculation(int someNum);

};

定义:

void foo::calculation(int someNum){
someNum = someNum;
}

现在在 someNum = someNum 行中,指的是哪个 someNum?如果我这样做:

this->someNum = someNum

那第二个 someNum 是什么?

避免这个问题的好的命名风格是什么?例如,在 objective-c 中,在成员变量名前加上前缀“_”。 (例如:_someNum);

最佳答案

在成员函数中,参数名隐藏了相同的类成员名,所以在

void foo::calculation(int someNum){
someNum = someNum;
}

两个 someNum 都引用参数。这是一个不会改变 this->someNum 的自赋值。

this->someNum = someNum;中,第二个someNum指的是函数参数。因此,这会将函数参数 someNum 的值分配给类成员 someNum

常见的命名约定包括类成员的 mm_ 前缀或后缀 _。前缀下划线可能会有问题,因为 C++ 保留以下划线开头后跟大写字母的名称。


请注意,构造函数中的成员初始化列表是一种特殊情况:

foo(int someNum) : someNum(someNum) { someNum = someNum; }
^ ^ ^ ^
| | | |
| ----------------------
| These three all refer to the parameter 'someNum',
| and not the class member.
|
The language requires this name to be referring
to a class member (or a base class) and so the
parameter called 'someNum' is not considered.

关于c++ - 如果在类中不使用 "this"会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422206/

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