老师,这个java无参构造函数对应到C++里怎么写呢?
来源:2-2 二次封装属于我们自己的数组
神经旷野舞者
2018-07-10
这里的这个没看懂,并没有定义capacity这个变量,把10传递进来是什么意思?是不是Array() 会自动调用Array(10)呢?
如果写成C++,是不是下面这样写很多:
Array(){ data = new int[10]; size = 0; } 我猜应该是 Array() { Array(10); }
不过C++的类里面定义数组总是报错,说不可以定义数组,C++里面这种情况怎么处理呢?问了个无关的问题:)
我知道了,java里int[] data;是不是其实也是个指针,所以C++里用int* data?
1回答
-
首先,在你的截图中,this(capacity:10); 中的capacity,是IDE给出的参数提示,这个“capacity”不是Java语法,印象里课程中提到过。
其次,在我们的Array类的实现中,有两个构造函数:
// 构造函数,传入数组的容量capacity构造Array public Array(int capacity){ data = new int[capacity]; size = 0; } // 无参数的构造函数,默认数组的容量capacity=10 public Array(){ this(10); }
第二个构造函数,是没有参数的构造函数。指用户使用这个构造函数的时候,可以不传任何参数。相比第一个构造函数,用户必须传入一个capacity参数。但是第二个构造函数的内部逻辑,是使用了一个默认值10,作为capacity,用这个默认值去调用第一个构造函数。
---
在Java中,一切对象都是引用,在Java语境中的引用,和C++中的指针近乎是一个意思:)是的,所以在C++中,类里面,data应该是int*类型的:)
---
我暂时还没来得及为这个课程添加C++语言的官方代码。不过有同学在学习这个课程的时候,自己使用C++语言对课程中所有的内容进行了实现(虽然还没有完全实现完,但也已经有90%了).如果在学习这个课程的过程中,自己使用C++进行实现遇到问题,可以参考这位同学的代码:)
github链接:https://github.com/houpengfei88/Play-with-Data-Structures
也可以在Github上和这位同学(侯鹏飞)交流具体的C++实现细节;或者加入课程的官方Q群,和 @侯鹏飞 交流C++实现相关的问题:)侯鹏飞同学是为非常热心的同学:)
加油!
132018-07-11
相似问题
回答 1
回答 1