我有使用Java工作的经验,但最近开始用C ++工作,我在理解后者存储在内存中的方式时遇到了一些麻烦。在java中,以下内容有效:
class Class {
int myInt;
public Class(int myInt) {
this.myInt = myInt;
}
}
所以我在类中有一个整数,我在创建对象时给它一个值。我想用C ++复制它:
class Class {
int myInt;
public:
Class (int myInt) {
// What goes here?
}
};
然而,这不起作用。如果我将传递给构造函数的变量命名为myInt
以外的其他变量,我可以简单地说明myInt = differentName
。但是假设在Java中,我希望传递给构造函数的变量和变量的名称都相同?我怎样才能做到这一点?
答案 0 :(得分:5)
两个选项:
class Class {
int myInt;
public:
Class (int myInt) : myInt(myInt)
{
}
};
您有意寻找的内容:
class Class {
int myInt;
public:
Class (int myInt)
{
Class::myInt = myInt;
}
};
但第一个是首选。
答案 1 :(得分:2)
您只需要使用构造函数初始化列表:
class Class {
int myInt;
public:
Class (int myInt) : myInt(myInt)
{
// by the time you get here, myInt is already initialized.
// You can assign a value to it or modify it otherwise,
// but you cannot initialize something more than once.
}
};
这是在构造函数中显式初始化数据成员的唯一方法。一旦进入构造函数体内,就会初始化所有数据成员。
答案 2 :(得分:2)
除了初始化语法之外,this
在C ++中也可用。您可以将其用作this->myInt
,因为this
是指针。
答案 3 :(得分:1)
“this”是C ++中的指针。所以它将是
this->myInt = myInt;
答案 4 :(得分:0)
以下是在c ++中实现相同的方法 this-> myInt = myInt;