【发布时间】:2020-06-06 10:06:42
【问题描述】:
除了重载构造函数以便其中一个接受额外参数之外,有没有办法调整默认参数以便我可以访问另一个参数的成员?
#include <iostream>
#include <vector>
template <typename T>
class ArrayList {
public:
int size = 0;
int capacity = 0;
T* array;
ArrayList(int capacity = 1) : capacity(capacity) {
array = new T[capacity];
}
ArrayList(std::vector<T>& vec, int capacity = vec.size()) {
size = (capacity = vec.size());
array = new T[capacity];
for (int i = 0; i < size; i++) array[i] = vec[i];
}
};
这里我试图将容量的值设置为向量的大小(如果未指定)。
【问题讨论】:
-
这个例子对我来说有点不清楚,尤其是
size = (capacity = vec.size()):这里你无论如何都要覆盖capacity,所以即使其余的都是正确的,参数值也永远不会被使用。 -
ArrayList(std::vector<T>& vec) : ArrayList(vec, vec.size()) {} -
是的,如果容量没有默认值,这就是我的代码的外观。
-
但是这样我的容量值被限制为 vec.size() ?
标签: c++ parameters constructor