先来看下面一段代码
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是一个很大的垃圾值.