一道简单的题,麻烦哪位高手给小弟我看看

一道简单的题,麻烦谁给我看看
这是钱能C++教程里的一个题目麻烦哪位给我讲讲这里面构造函数执行的先后顺序,以及参数值的变化,最好详细点。。。。。我看了半天没明白,非常感谢。。。。。


//***********************
//**         ch12_12.cpp         **
//***********************

#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= "no   name ",int   ssID=0):id(ssID)
    {
        cout   < < "Constructing   student   "   < <pName   < <endl;
        strncpy(name,pName,sizeof(name));
        name[sizeof(name)-1]= '\n ';
    }
protected:
    char   name[20];
    StudentID   id;
};

void   main()
{
    Student   s( "Randy ",9818);
    Student   t( "Jenny ");
}


------解决方案--------------------
Student s( "Randy ",9818);

该对象构造时候,
调用 Student(char* pName= "no name ",int ssID=0):id(ssID)
将第二个参数 9818 传递给 StudentID 构造函数构造 id 成员,
然后 执行构造函数体的内容:
{
cout < < "Constructing student " < <pName < <endl;
strncpy(name,pName,sizeof(name));
name[sizeof(name)-1]= '\n ';
}

Student t( "Jenny "); 就是第二个参数使用默认的 0