解读c++程序

#include<iostream>
#include<iomanip>
using namespace std;
class MyClass
{
public:
MyClass()
{cout<<'A'<<endl;}
MyClass(char c)
{cout<<c<<endl;}
~MyClass()
{cout<<'B'<<endl;}
};
int main()
{
MyClass p1,*p2;
p2=new MyClass('X');
delete p2;
return 0;
}

定义一个类,名称为MyClass
包含有两个构造函数(一个无参,一个有参),一个析构函数

main函数:
第一句:MyClass p1,*p2;声明了两个对象
p1为类对象,在程序中只是声明了,没有使用,但是对象声明的时候会调用默认的构造函数,就是无参的那个,所以程序会输出字符‘A’。
p2为类的指针对象,在下一句中赋值。
第二句:p2=new MyClass('X');
p2通过new初始化并分配空间,同时调用相应的构造函数,就是那个带参数的MyClass(char c),c被赋值为‘X’
所以程序此时会输出字符’X‘。
第三句:delete p2;
用delete删除p2并释放p2分配的空间,delete 的时候会调用类的析构函数,也就是~MyClass(),所以程序会输出字符‘B’

注:p1在函数结束后系统会自动调用其析构函数,所以析构函数会被调用两次,但是这个输出是在main函数结束时。

所以程序最后的运行结果是:
A
X
B
B
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-07
#include<iostream> //掌管C++标准输入输出的头文件
#include<iomanip> //另一个跟输入输出有关的头文件,这里其实不需要

//把std命名空间导入到这个文件里,这样cout, cin, endl之类的就可以直接用了,否则得写成 //std::cout才行。
using namespace std;

//定义一个叫做MyClass的类
class MyClass
{
public:
MyClass() //构造函数1,不接受参量
{cout<<'A'<<endl;} //它只干一件事:打印字符常量'A'
MyClass(char c) //构造函数2,接受一个字符参量
{cout<<c<<endl;} //它也只干一件事:打印字符变量c的值,你传什么给c,就打印出什么
~MyClass() //析构函数,在对象消失时被调用
{cout<<'B'<<endl;} //它干一件事:打印字符常量'B’,你看到'B'就知道对象结束了
};
int main()
{
//p1是类MyClass的一个实体对象, p2是指向类MyClass对象的指针
MyClass p1,*p2;

//new创建一个动态对象,用的是构造函数2,为什么?因为传了个字符'X'
//然后p2指向这个新创建的对象
p2=new MyClass('X');

//释放指针p2指向的内存空间,也就是刚刚创建的对象
//执行到这里你应该能在屏幕上看见打印出来的字符'B'
delete p2;

return 0;
}

注释完了,把我给累得。。
第2个回答  2011-01-07
输出应该是A X B B
第一句话MyClass p1时候调用了p1的构造函数 MyClass(),因为没有给定p1的参数,输出A
第二句话p2=new MyClass('X');调用p2的构造函数MyClass(char c),输出X
第三局 delete p2;调用p2的析构函数,~MyClass(),输出B
main函数结束,程序自动调用局部变量的析构函数,就是p1的析构,再次输出B本回答被提问者和网友采纳
第3个回答  2011-01-08
这根本不是什么主要部分·~没贴完~~

就几个定义,看不出什么~~

多线程续传,看名字也理解了应该是什么样子的了~

建立个线程监听,然后收到一个连接后就启动一个工作线程,工作线程根据这个连接的要求发送相应的数据~
相似回答