我的大小函数返回 0

My size function is returning 0?

本文关键字:返回 函数 我的      更新时间:2023-10-16

>header

#ifndef INTVECTOR_H
#define INTVECTOR_H
using namespace std;
class IntVector{
private:
    unsigned sz;
    unsigned cap;
    int *data;
public:
    IntVector();
    IntVector(unsigned size);
    IntVector(unsigned size, int value);
    unsigned size() const;
};
#endif 

身体

#include "IntVector.h"
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

IntVector::IntVector(){
    sz = 0;
    cap = 0;
    data = NULL;
}
IntVector::IntVector(unsigned size){
    sz = size;
    cap = size;
    data = new int[sz];
    *data = 0;
}
IntVector::IntVector(unsigned size, int value){
    sz = size;
    cap = size;
    data = new int[sz];
    for(unsigned int i = 0; i < sz; i++){
        data[i] = value;
    }
}
unsigned IntVector::size() const{
    return sz;
}

当我在 Main 中测试我的函数时,(IntVector(6, 4); cout <<testing.size() <<endl;),我的 testing.size() 测试始终输出 0,而理论上它应该是 6,因为我在 IntVector 函数中分配了 sz 和 cap。 关于为什么它输出 0 的任何想法?

看起来您正在创建一个临时的,该临时在此处被丢弃:

IntVector(6, 4); 

你想要创建一个对象,如下所示:

IntVector testing(6, 4); 

然后它起作用了。