0
点赞
收藏
分享

微信扫一扫

C++ 容易犯错误的模型

624c95384278 2022-06-01 阅读 64

#include <iostream>

using&nbsp;namespace&nbsp;std;


class&nbsp;Circle{
public:
void&nbsp;setR(double&nbsp;r){
m_r&nbsp;=&nbsp;r;
}
double&nbsp;getR()&nbsp;{
return&nbsp;m_r;
}

double&nbsp;getArea(){
return&nbsp;area;
}

double&nbsp;getGirth(){
return&nbsp;girth;
}

private:
double&nbsp;m_r;
double&nbsp;area&nbsp;=&nbsp;m_r&nbsp;*&nbsp;m_r&nbsp;*&nbsp;3.14;&nbsp;//面积   不能给类的属性这样初始化
double&nbsp;girth&nbsp;=&nbsp;3.14&nbsp;*&nbsp;2&nbsp;*&nbsp;m_r;&nbsp;//周长    不能给类的属性这样初始化
};

int&nbsp;main(void){

Circle&nbsp;circle;

circle.setR(30.0);
cout&nbsp;&lt;&lt;&nbsp;&quot;circle&nbsp;的半径是&nbsp;&nbsp;&quot;&nbsp;&lt;&lt;&nbsp;circle.getR()&nbsp;&lt;&lt;&nbsp;&quot;&nbsp;&nbsp;circle的周长是&quot;&nbsp;&lt;&lt;&nbsp;circle.getGirth()&nbsp;&lt;&lt;&nbsp;&quot;&nbsp;&nbsp;circle的面积是&quot;&nbsp;&lt;&lt;&nbsp;circle.getArea()&nbsp;&lt;&lt;&nbsp;endl;

}

当执行该代码的时候会出现乱码是因为:
初始化的时候已经执行,当时m_r是一个随机值。当执行circle.getGirth()的时候,只是从变量所标示的内存空间中拿值,并没有执行3.14 * 2 * m_r
结果:造成girth变量是一个乱码

推荐这样写:

#include <iostream>

using&nbsp;namespace&nbsp;std;


class&nbsp;Circle{
public:
void&nbsp;setR(double&nbsp;r){
m_r&nbsp;=&nbsp;r;
}
double&nbsp;getR()&nbsp;{
return&nbsp;m_r;
}

double&nbsp;getArea(){
area&nbsp;=&nbsp;m_r&nbsp;*&nbsp;m_r&nbsp;*&nbsp;3.14;&nbsp;&nbsp;// 当在方法中给属性赋值时可以避免乱码
return&nbsp;area;
}

double&nbsp;getGirth(){
girth&nbsp;=&nbsp;3.14&nbsp;*&nbsp;2&nbsp;*&nbsp;m_r;&nbsp;&nbsp;// 当在方法中给属性赋值时可以避免乱码
return&nbsp;girth;
}

private:
double&nbsp;m_r;
double&nbsp;area;&nbsp;//面积
double&nbsp;girth;&nbsp;//周长
};

int&nbsp;main(void){

Circle&nbsp;circle;

circle.setR(10.0);
cout&nbsp;&lt;&lt;&nbsp;&quot;circle&nbsp;的半径是&nbsp;&nbsp;&quot;&nbsp;&lt;&lt;&nbsp;circle.getR()&nbsp;&lt;&lt;&nbsp;&quot;&nbsp;&nbsp;circle的周长是&quot;&nbsp;&lt;&lt;&nbsp;circle.getGirth()&nbsp;&lt;&lt;&nbsp;&quot;&nbsp;&nbsp;circle的面积是&quot;&nbsp;&lt;&lt;&nbsp;circle.getArea()&nbsp;&lt;&lt;&nbsp;endl;

}


举报

相关推荐

0 条评论