c++ - 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();
当我执行此代码时,如果我尝试查找该区域,则输出未正确显示,有时上述对象下方的代码也未执行
我应该将该区域作为我的输出
解决方案
Afloat*
应该指向一个float
对象。delete r
在构造函数中暗示也应该有一个new float
地方。
float*
在现代 C++中,我们很少使用new float
. 例如,在您的示例中,最好只有一个 member float r
。如果您要使用指针,请使用智能指针并跳过new/delete
. 使用例如std::shared_ptr<float>
。
推荐阅读
- r - 我需要帮助从 CSV 文件创建表格
- javascript - Node JS Express 包含/导入/导出
- c++ - 使用 protobuf 对象作为 std::map 中的键
- vba - 如何从Firefox浏览器上打开的特定网页获取值
- c++ - C++,带有向量的copy_if
- python - 在 Jupyter Notebook 中使用非常大的二维数组字典
- flutter - 为什么 setState 不使用差异输入重建小部件?
- fortran - 使用 Fortran 90 进行数值积分
- c# - 未找到 SendGridAPIClient
- javascript - 如何将带有嵌入对象的对象从 JavaScript (jQuery/ajax) 传递到 Python (Flask)?