+ -
当前位置:首页 → 问答吧 → 求教一个C++的程序问题,刚学C++,请大家解惑

求教一个C++的程序问题,刚学C++,请大家解惑

时间:2011-12-27

来源:互联网

代码如下:
#include <iostream>
class CalcCout
{
int a,b;
static int c;
public:
CalcCout(int ax=20,int bx=30)
{
a=ax;
b=bx;
c++;
std::cout<<"1:"<<c<<std::endl;
}
static int getcount(){return c;}
static void setcount(int cx){c=cx;}
~CalcCout(){c--;std::cout<<"2:"<<c<<std::endl;}
};
  int CalcCout::c=10;
int main()
{
CalcCout a,b,c,*pa,*pb,as[3];
pa =new CalcCout();
pb =new CalcCout(20.15);
delete pa;
CalcCout::setcount(CalcCout::getcount()+1);
delete pb;
std::cout<<CalcCout::getcount()<<std::endl;
}
运行结果是:
1:11
1:12
1:13
1:14
1:15
1:16
1:17
1:18
2:17
2:17
17
2:16
2:15
2:14
2:13
2:12
2:11
请大家帮忙分析一下

作者: rcmlover   发布时间: 2011-12-27

static成员变量具有记忆功能,相当于全局变量,每次构造与析构的时候对其值的改变都会生效,仔细跟踪每次的构造与析构,理清cout输出顺序就可以了。定义类指针时不会调用构造,因为没有实际的对象,在new内存之后才会调用构造,delete时析构

作者: ywshzh   发布时间: 2011-12-27

析构与构造顺序相反

作者: ywshzh   发布时间: 2011-12-27

调用构造后,为什么会出现8个“1:”的输出?

作者: rcmlover   发布时间: 2011-12-27

数组有三个元素,每个元素都是一个对象,构造三次

作者: ywshzh   发布时间: 2011-12-27

构造了3次 每个元素都是一个对象

作者: a2233442   发布时间: 2011-12-27

引用 6 楼 ywshzh 的回复:

数组有三个元素,每个元素都是一个对象,构造三次

类 CalcCout声明了8个对象,但是在这个程序中8个对象都构造了嘛??不是只有pa =new CalcCout();
pb =new CalcCout(20.15);两个吗?

作者: rcmlover   发布时间: 2011-12-27

热门下载

更多