如何在c ++中从private初始化构造函数内部的向量,类似于Java

时间:2016-11-19 18:40:13

标签: java c++ class arraylist vector

我会尝试尽可能简单

在Java中,我会做以下事情:

public class foo{

    private final int x;  
    private final ArrayList<classname1> one;
    private final ArrayList<classname2> two;

    //constructor
    public foo(int x){
        this.x = x;
        one = new ArrayList<>();
        two = new ArrayList<>();
        menu();
    }
然后我会使用&#39;一个&#39;和&#39;两个&#39;在我的代码中

我目前正在使用c ++而我正在阅读C ++中与ArrayList相当的向量。我尝试过尝试但是我发现很难理解如何在构造函数中初始化向量,就像java代码一样。

这是我目前在c ++中所拥有的:

class foo{

private: int x;
private: vector<classname1> one;
private: vector<classname2> two;

public: 

//constructor
foo(int x) {
 this->x= x;
 //how would I initialize the vectors here like in java? Something like but of course it doesn't work:
        one = new Vector<>();
        two = new Vector<>();
 menu();
}

谢谢!任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

没有什么可以初始化的。 std::vector有自己的默认构造函数。除非您需要使用一些初始内容显式初始化std::vector,否则无需执行任何操作。

你必须在Java中做你必须做的事情是因为在Java中所有对象都不是真正的对象。它们实际上是指向对象的指针。因此,Java构造函数必须使用new关键字精心初始化每个构造函数。在C ++中不是这样。

C ++对象的工作方式完全不同。如果您在学习C ++的同时完全忘记了对象所知的一切,那么您将为自己做一件大事。这很难,因为在这个领域,C ++的语法与Java非常相似,但是C ++对象的工作方式与它们在Java中的工作方式完全不同,如果你不断尝试绘制类比,你只会感到困惑,并且错误的路径一次又一次。

学习和理解C ++对象的正确方法是阅读一本好的C ++书籍,而不是考虑Java。

其他一切都是如此。 C ++中的“private”关键字与Java中的“private”关键字不同。在C ++代码中的三个“私有”实例中,只需要第一个实例。其他两个完全没有任何结果。

C ++不是Java。