首页 > 解决方案 > Float* 数据​​成员没有给出预期的输出

问题描述

class Examp{
    private:
        float *r;       
    public:                 
        Examp(){
            //*r=10.0f;         
        }               
        ~Examp(){
            delete r;
        }                       
        Examp(float r){
            *(this->r)=r;               
        }   
        float circlearea(){
            return 3.14*(*r)*(*r);
        }       
        Examp operator +(Examp &e){                     
            Examp ex;   
            *(ex.r)=*(this->r)+*(e.r);      
            return ex;
        }
        void show(){    
                    std::cout<<"Radius :"<<*r<<std::endl;
        }
};
Examp *e1=new Examp(10);
Examp *e2=new Examp(5);
Examp *e3=new Examp;
e3=e1+e2;
e1->circlearea();
e2->circlearea();
e2->circlearea();

当我执行此代码时,如果我尝试查找该区域,则输出未正确显示,有时上述对象下方的代码也未执行

我应该将该区域作为我的输出

标签: c++pointers

解决方案


Afloat*应该指向一个float对象。delete r在构造函数中暗示也应该有一个new float地方。

float*在现代 C++中,我们很少使用new float. 例如,在您的示例中,最好只有一个 member float r。如果您要使用指针,请使用智能指针并跳过new/delete. 使用例如std::shared_ptr<float>


推荐阅读