c ++ getSize()方法返回奇怪的值

时间:2018-12-15 06:07:46

标签: c++

我正在创建cpScalar.hpp和cpVector.hpp文件,并且在调用cpVector的getSize()方法时遇到错误。下面是我的代码。

在main中删除v2会将v1的输出更改为4,但是使用v2会导致输出奇怪。我尝试将return this-> size更改为return arr.size(),但它提供了类似的输出。

有人可以告诉我为什么会发生这种情况,如何解决它,还是可以给我提供指向指向此页面的指令链接?我不知道这种问题叫什么,所以我什至无法搜索类似的问题。

谢谢。

//cpVector.hpp
private:
    vector<cpScalar> arr;
    unsigned int size;

public:
    cpVector(cpScalar sarr[], unsigned int size2){ // this constructor is fixed
        arr.resize(size2);
        this->size = size2;
        for (int i =0; i<size2; i++){
            arr[i] = sarr[i];
        }
    };
unsigned int getSize(){
        return this->size;
    };

and at main:

int main()
{
    cpScalar s_arr[4];
    for(int i = 0; i < 4; i++){
        s_arr[i] = cpScalar(i+1); //1, 2, 3, 4
    }
    cpVector v1(s_arr, 4);

    cpScalar s_arr2[4];
    for(int i = 4; i < 8; i++){
        s_arr2[i] = cpScalar(i+1); //5,6,7,8
    }
    cpVector v2(s_arr2, 4);
    cout << v1.getSize() <<  endl; // prints 1097313485
    cout << v2.getSize() << endl; // prints 4
}

输出为:

1097313485 \ n 4

删除v2后的输出仅为4

0 个答案:

没有答案