以下代码检查空引用,并使用newif检测创建对象.
代码编译并成功创建对象(如预期的那样),但程序意外终止ref.set_dat(55)于函数行main()(也显示在注释中),这是一种意外行为.
我似乎不明白为什么set_dat()在使用成功创建对象时方法调用方法失败new?
class X {
private:
int *_dat,*__dat;
public:
X(); // constructor
~X(); // destructor
int get_dat() const {
return *(this->_dat);
}
int get__dat() const {
return *(this->__dat);
}
void set_dat(int data) {
*(this->_dat)=data;
}
void set__dat(int data) {
*(this->__dat)=data;
}
};
X::X() {
this->_dat=new int(0); // assign default value of 0
this->__dat=new int(0);
cout << "Construction Successful\n";
}
X::~X() {
delete this->_dat;
delete this->__dat;
_dat=NULL;
__dat=NULL;
cout << …Run Code Online (Sandbox Code Playgroud)