小编zeu*_*eus的帖子

在c ++中使用空引用检查

以下代码检查空引用,并使用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)

c++ oop pointers reference

1
推荐指数
1
解决办法
153
查看次数

标签 统计

c++ ×1

oop ×1

pointers ×1

reference ×1