先来看下面一段代码
1 #include<iostream> 2 3 using namespace std; 4 5 class Circle 6 { 7 public: 8 double pi = 3.1415926; 9 double r; 10 double area = pi*r*r; 11 12 double setArea() 13 { 14 return area = pi*r*r; 15 } 16 }; 17 18 int main() 19 { 20 Circle c1; 21 cout << "请输入半径:" << endl; 22 cin >> c1.r; 23 24 cout << c1.area << endl; 25 cout << c1.setArea() << endl; 26 27 system("pause"); 28 return 0; 29 }
运行结果:
请输入半径:10 2.69149e+124 314.159 请按任意键继续. . .
如运行结果所示,如果把面积area用成员变量来计算,计算的结果是错误,这是因为在类Circle创建对象c1后, 因为编译器不会主动调用 pi*r*r去计算,只是从内存中去取值,所以打印出来的area是一个很大的垃圾值.