【C++】初学者易犯的错误模型(一)

1、具体问题
如下以下代码所示,为什么这段代码运行时会出现乱码?请通过内存四驱的角度解释?

#include"iostream"
using namespace std;
class circle
{
    
    
public:
	double r;
	double pi = 3.1456;
	double area = pi*r*r;  //问题出在这里,请解释?
};

int main()
{
    
    
	circle ci;
	cout << "please input r:" <<" ";
	cin >> ci.r;        //输入 10
	cout << ci.area << endl;   // area的值是乱码的数,为什么?
	system("pause");
	return 0;
}

在这里插入图片描述从图中我一看到当程序执行时,这了类的内存分配以及初始化情况,area当后r面输入10时,但出现输出结果是乱码的原因在于,area再初始化时已经执行pirr语句被赋初值,当我们后面给赋新值时,程序并不会再重新执行PIrr语句,因为area已经被初始化。简而言之,当执行ci.r时,程序只会重area中拿值,不会再执行pirr,因此为了解决这个问题,可以在内中添加一个成员函数。

猜你喜欢

转载自blog.csdn.net/qq_32643313/article/details/105192154