I am wondering what is the difference between the following ways to create object of class. The head file is:
class NumberRange {
public:
NumberRange(int a, int b);
virtual ~NumberRange();
void Print(int a, int b);
private:
int *range_;
int size;
};
The .cc file is:
#include <iostream>
#include "numberrange.h"
using namespace std;
NumberRange::NumberRange(int a, int b) {
if (a > b) {
cout << "a must be equal or less than b" << endl;
}
}
NumberRange::~NumberRange() {
}
void NumberRange::Print(int a, int b) {
this->size = b - a + 1;
this->range_[0] = a;
for (int i = 0; i < this->size; i++) {
this->range_[i] = a + i;
cout << this->range_[i] << endl;
}
}
int main() {
NumberRange * numberrange = new NumberRange(5, 9);
numberrange->Print(5, 9);
}
When I create an object using pointer and compile the program. I got an error says [1] 20346 segmentation fault ./numberrange
but if I change the main function as:
int main() {
NumberRange numberrange(5,9);
numberrange.Print(5,9);
}
This would be work. So I don't know when should I use pointer to create an object. Thank you!