【发布时间】:2018-01-10 10:17:21
【问题描述】:
首先是示例代码:
cPerson.h:
#pragma once
class cPerson
{
public:
cPerson();
~cPerson();
int Age;
};
cPerson.cpp
#include "cPerson.h"
cPerson::cPerson()
{
this->Age = 3; // Way 1
cPerson::Age = 4; // Way 2
}
cPerson::~cPerson() { }
好的,现在我的问题:
如果我们在 C++ 中定义一个新类,有两种方法可以设置初始值。有(方式 1)使用“this”指针,或(方式 2)使用范围运算符( :: )。 在学校里,我用“this->”学会了它。现在,在不使用 C++ 多年后,我再次开始使用它并找到了第二种方法,即使用范围运算符。 两种方式都可以正常工作,但是它们之间的确切区别是什么以及“更快”/“更好”的方式是什么?如果我正在编程,我就是那种喜欢知道我的 ram/cpu 到底发生了什么的人。
所以我希望有人可以帮助我,并提前感谢。
【问题讨论】:
-
您可以简单地编写
Age = 3;或更好地使用 Bathsheba 提到的成员初始化器列表。大多数时候,你不应该限定你的班级成员,所以你应该直接使用Age而不是this->Age或cPerson::Age。 -
在您的特定示例中,没有区别。通常,编译器将以相同的方式处理它们。还有其他方法。
-
在类名前加上
c不是最好的主意 -
@PasserBy:为什么?
-
这是多余的信息,会妨碍。当读者看到周围的上下文时,他们将能够看到名称是一种类型。你不会将
Person jonskeet;误认为是别的东西
标签: c++ constructor operators