标题
#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和<<。你知道它为什么输出0吗?
发布于 2014-02-22 10:00:25
看起来你正在创建一个临时的,在这里被丢弃:
IntVector(6, 4); 您想要创建一个对象,如下所示:
IntVector testing(6, 4); 然后it works。
https://stackoverflow.com/questions/21948614
复制相似问题