首页 > 解决方案 > c++ getSize() 方法返回奇怪的值

问题描述

我正在创建 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

标签: c++

解决方案


推荐阅读