极需知道一个简单c++运行分析

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:53:31
#include<iostream.h>
#include<stdio.h>
class innerclass
{
int x;
public:
innerclass(){cout<<"i"<<endl;}
innerclass(int z) { x=z; cout<<"iz"<<endl;};
void write( ) {printf("%d\n",x);}
};
class outerclass
{
int y;
innerclass g;
innerclass *h;
public:
outerclass(int a);
void write( ) { printf("%d\n",y); }
void write_inner_g() {g.write(); }
void write_inner_h() {h->write();}
};
outerclass::outerclass(int a)
{
h=new innerclass(12);
y=a;
cout<<"o"<<endl;
}
int main()
{ outerclass ob(22);
ob.write_inner_h();
ob.write();
return 1;
}以上的运行结果是:
i
iz
o
12
22
我想知道以上的结果如何出来的?能否一个一个具体分析出来,谢谢!

#include<iostream.h>
#include<stdio.h> //标注输入输出头文件

//===========================================================
//函数调用过程:
//1、主函数中:outerclass ob(22);声明类对象,自动调用其构造函数
//2、outerclass构造函数中,h=new innerclass(12);此时自动调用innerclass的默认构造函数和带参的构造函数,此时分别输出“i”、“iz”
//3、outerclass构造函数中:cout<<"o"<<endl; //输出一个“o”
//4、ob.write_inner_h(); ob.write(); 分别输出12、22
//===========================================================

//声明一个innerclass类
class innerclass
{
int x; //声明一个私有变量(类里面如果不加成员限定符,则默认为私有的)
public:
innerclass(){cout<<"i"<<endl;} //不带参的构造函数,功能是输出一个“i”
innerclass(int z) { x=z; cout<<"iz"<<endl;}; //带参的构造函数,将参数值赋给x,并输出一个“iz”
void write( ) {printf("%d\n",x);} //write函数,输出x的值
};

//声明outerclass类
class outerclass
{
//声明3个私有变量,其中第二个是innerclass对象,第三个是innerclass指针
int y;