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,因此为了解决这个问题,可以在内中添加一个成员函数。