将值从构造函数传递到类中的私有整数

时间:2014-03-02 22:45:37

标签: java c++ constructor

我有使用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中,我希望传递给构造函数的变量和变量的名称都相同?我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:5)

两个选项:

  • 使用Initializer list

    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;