gpt4 book ai didi

c++ - 我可以对字段和构造函数参数使用相同的名称吗?

转载 作者:行者123 更新时间:2023-12-01 14:58:38 25 4
gpt4 key购买 nike


class C {
T a;
public:
C(T a): a(a) {;}
};

合法吗

最佳答案

是的,它是合法的,并且适用于所有平台。
它将正确地将您的成员变量a初始化为传入的值a。

一些更干净的名字被认为是不同的名字,但不是全部。我个人实际上经常使用它:)

具有相同变量名的初始化列表可以工作,因为初始化列表中的初始化项的语法如下:

<成员>(<值>)

您可以通过创建一个执行以下操作的简单程序来验证我在上面编写的内容:(它将无法编译)

class  A
{

A(int a)
: a(5)//<--- try to initialize a non member variable to 5
{
}
};

您将收到类似以下的编译错误:A没有名为“a”的字段。

附带说明:

可能不希望使用与参数名称相同的成员名称的原因之一是,您更容易出现以下情况:
class  A
{

A(int myVarriable)
: myVariable(myVariable)//<--- Bug, there was a typo in the parameter name, myVariable will never be initialized properly
{
}
int myVariable;
};

在旁注(2):

可能希望使用与参数名称相同的成员名称的一个原因是,您不太容易出现以下情况:
class  A
{

A(int myVariable_)
{
//<-- do something with _myVariable, oops _myVariable wasn't initialized yet
...
_myVariable = myVariable_;
}
int _myVariable;
};

对于较大的初始化列表,也可能会发生这种情况,在初始化列表中对其进行初始化之前,请使用_myVariable。

关于c++ - 我可以对字段和构造函数参数使用相同的名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58741640/

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