如何在c+;中从private初始化构造函数内的向量+;类似于Java中的ArrayList
我会尽量使这件事尽可能简单 在Java中,我将执行以下操作:如何在c+;中从private初始化构造函数内的向量+;类似于Java中的ArrayList,java,c++,class,arraylist,vector,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; o
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();
}
公共类foo{
私人最终int x;
私人终审庭名单;
二等兵;
//建造师
公共食物(int x){
这个.x=x;
一=新的ArrayList();
二=新的ArrayList();
菜单();
}
然后在我的代码中使用“一”和“二”
<>我现在使用C++,我在阅读C++中的ArayLead相当于向量。我已经尝试过了,但是我发现很难理解如何初始化像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();
}
class-foo{
私人:int x;
私人:向量1;
私人:向量2;
公众:
//建造师
foo(int x){
这个->x=x;
//我应该如何像在java中那样初始化向量?类似于,但它当然不起作用:
一=新向量();
二=新向量();
菜单();
}
谢谢!感谢您的帮助。没有什么需要初始化的。
std::vector
有自己的默认构造函数。除非您需要使用一些初始内容显式初始化std::vector
,否则无需执行任何操作
<> P>你必须做java必须做的事情是因为java中的所有对象都不是对象,它们实际上是指向对象的指针。因此,java构造函数必须使用<代码>新< /Cord>关键字来细致地初始化每个对象。C++中不适用。
C++对象的工作原理是不同的。如果你在学习C++时完全忘记了你所知道的关于对象的所有知识,你会帮你很大的忙。这将是很困难的,因为C++的语法在这方面非常类似于java,但是C++对象的工作原理与爪哇不同。进行类比你只会感到困惑,一次又一次地走上错误的道路
<>学习和理解C++对象的正确方法是读一本好的C++书籍,而不是思考java。 C++中的“私有”关键字与java中的“私有”关键字不一样。C++代码中的三个“私有”实例只需要第一个实例,而其他两个实例则完全没有实现。C++不是Java。这取决于您想将其初始化为什么,您应该对此进行澄清。但是,如果您想要默认的初始化向量,不做任何事情都可以。只需
foo(int val):x(val){menu();}
one
和two
与foo
对象位于相同的分配空间。如果要使它们独立于foo
类,应使用unique\ptr one
或另一个智能指针声明。