📄 604.cpp
字号:
//程序中Book类有一个静态成员Num,记录总的对象个数。但运行的结果有点"奇怪":在main()标记的①处,应输出:"Num of Books is 1."运行正确,因为此前只有一个对象--r1。接着②处调用fn(r1),进入fn(Book c)内创建了4个对象:形参c、对象o1、o2、o3,至此共有5个对象,但却输出:"Num of Books is 2."。在③处,因为退出fn(),4个对象撤消,至此只有一个对象--r1,但输出"Num of Books is -2."。⑴原因是什么?⑵如何修改524.cpp。
//604.CPP
#include <iostream.h>
class Book
{
int page;
static int Num;// private静态成员变量
public:
Book(int pp){page=pp;Num++;}
//Book(Book & r){page=r.page; Num++;}//Must be here
~Book(){Num--;}
static int GetNum(){return Num;}
};
void fn(Book c);
int Book::Num=0;// 对静态公有成员变量进行初始化
void main()
{
Book r1(20.0);
cout<<"Num of Books is "<<Book::GetNum()<<".\n";//①
fn(r1);//②
cout<<"Num of Books is "<<Book::GetNum()<<".\n";//③
}
void fn(Book c)
{
Book obj=c;
cout<<"Num of Books is "<<Book::GetNum()<<".\n";
}
/*
Num of Books is 1.
Num of Books is 3.
Num of Books is 1.
*/
/* if without =overload
Num of Books is 1.
Num of Books is 1.
Num of Books is -1.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -