我会尝试尽可能简单
在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();
}
谢谢!任何帮助表示赞赏。
答案 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。