C++问题需要高手指点

来源:百度知道 编辑:UC知道 时间:2024/06/21 06:01:44
#include <iostream.h>
#include <string.h>
class StudentID
{
public:
StudentID(int id=0)
{
value=id;
cout<<"Assigning student id"<<value<<endl;
}
~StudentID()
{
cout<<"Destructing id"<<value<<endl;
}
protected:
int value;
};
class Student
{
public:
Student(char*pName="noName",int ssID=0)
{
cout<<"Constructing student"<<pName<<endl;
strcpy(name ,pName);
name[sizeof(name)-1]='\0';
StudentID id(ssID);
}
protected:
char name[20];
StudentID id;
};
void main()
{
Student s("Randy",9818);
}
希望能先告诉我详细的执行程序的步奏,越详细越好!
Student(char*pName="noName",int ssID=0)
关于SSID
StudentID id(ssID);
这的SSID
Student s("Randy",9818);
这的参数
编译后

首先我们看 main函数 里面先执行 Student s("Randy",9818);
定于了一个Student 的实例 s , s里面有2个数据成员
protected:
char name[20];
StudentID id;
因为是数据成员,所有要在类最先定于,(不定于其他函数不明白),这样就定于了 StudentID id; ,那么id也一样,所有就出现id 比 s先构造的情况.因为这个还没有进行s的构造,StudentID(int id=0) 又又默认参数,所有输出Assigning student id0 明白了吧?

学习了