我有以下课程:
class MyVector{
public:
MyVector(int num);
virtual ~MyVector();
int my_size();
private:
vector<int> some_vector;
};
构造函数和size函数如下所示:
MyVector::MyVector(int num) {
vector <int> some_vector(num);
}
int MyVector::my_size() {
return this->some_vector.size();
但是,在运行这些行时:
MyVector *Bul = new MyVector(5);
cout << Bul->my_size() << endl;
输出为0。有人可以解释为什么会这样吗?
您的构造函数创建了一个局部变量,该局部变量遮蔽了您的成员变量
MyVector::MyVector(int num) {
vector<int> some_vector(num);
}
而是使用成员初始化列表
MyVector::MyVector(int num)
: some_vector(num)
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句