C++ 除非指定";否则无法调用getter方法;这";关键词
为什么教程页面中的示例在构造函数中没有this关键字的情况下工作 网站上的代码:C++ 除非指定";否则无法调用getter方法;这";关键词,c++,C++,为什么教程页面中的示例在构造函数中没有this关键字的情况下工作 网站上的代码: #include <iostream> using namespace std; class Rectangle { int width, height; public: Rectangle (); Rectangle (int,int); int getWidth() { return width; } }; Rectangle::Recta
#include <iostream>
using namespace std;
class Rectangle {
int width, height;
public:
Rectangle ();
Rectangle (int,int);
int getWidth() {
return width;
}
};
Rectangle::Rectangle () {
width = 5;
height = 5;
}
Rectangle::Rectangle (int a, int b) {
width = a;
height = b;
}
int main () {
Rectangle rect (3,4);
Rectangle rectb;
cout << "rect area: " << rect.getWidth() << endl;
cout << "rectb area: " << rectb.getWidth() << endl;
return 0;
}
#包括
使用名称空间std;
类矩形{
int宽度、高度;
公众:
矩形();
矩形(int,int);
int getWidth(){
返回宽度;
}
};
矩形::矩形(){
宽度=5;
高度=5;
}
矩形::矩形(int a,int b){
宽度=a;
高度=b;
}
int main(){
矩形矩形矩形(3,4);
矩形矩形矩形B;
库特
因为您的私有变量名为name,而您发送的变量也名为name,所以可以使用此->指定您正在使用的名为name的变量
因为您的私有变量名为name,而您发送的变量也名为name,所以您可以使用此->来指定您正在使用的名为name的变量。问题在于函数的参数与类同名,因此编译器不知道您在说哪个变量,除非您使用此>。您可以通过更改变量名称或使用成员初始化列表来解决此问题
Person::Person (int age, std::string name) : name(name), age(age) {}
请注意,我喜欢使用与类变量相同的名称,但在名称后添加一个\uuu
,以使其不同。因此,在这种情况下,我会执行以下操作:
Person::Person (int age_, std::string name_) : name(name_), age(age_) {}
这使得区分类成员和构造函数参数变得更容易。问题是函数的参数与类的名称相同,因此编译器不知道您在谈论哪一个,除非您使用This
。您可以通过更改变量的名称或可以使用成员初始化列表
Person::Person (int age, std::string name) : name(name), age(age) {}
请注意,我喜欢使用与类变量相同的名称,但在名称后添加一个\uuu
,以使其不同。因此,在这种情况下,我会执行以下操作:
Person::Person (int age_, std::string name_) : name(name_), age(age_) {}
这使得区分类成员和构造函数参数变得更容易。否则编译器将如何区分在参数列表中定义的age
和name
是类成员的age和name
呢?否则编译器将如何区分您在参数列表中定义的age
和name
是类成员的age
和name
?哦,就是这样!以后我会使用不同的参数/变量名。@Ferrante对了一半,请使用成员初始化列表。@Ferrante这通常是个好主意。我喜欢使用与类变量相同的名称,但在名称后添加一个u以使其不同。因此,在本例中,我将执行Person::Person(int-age,std::string-name_uu):name(name_u),age(age_u){}
@Ferrante,没问题。很高兴提供帮助。“这样,只要看一眼,就知道哪个变量是哪个。”嗯,我想我会一直忘记尾随的下划线是指“数据成员”还是“函数参数”.Oh,就是这样!以后我会使用不同的参数/变量名。@Ferrante对了一半,请使用一个成员初始化列表。@Ferrante这通常是个好主意。我喜欢使用与类变量相同的名称,但在名称后添加一个u以使其不同。因此在本例中,我会执行Person::Person(int age,std::string name):name(name),age(age){}
@Ferrante没问题。很乐意帮忙。“这样,只要看一眼就知道哪个变量是哪个。”嗯,我想我会一直忘记尾随下划线是指“数据成员”还是“函数参数”。