注册 登录
编程论坛 C++教室

求助 c++类组合 疑问

liuyjh 发布于 2008-01-18 17:08, 587 次点击
[color=DeepSkyBlue]#include"iostream.h"
#include"string.h"
class StudentID
{public:
 StudentID(int id=0)
 {value=id;[size=5][size=4]
[/size]
 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<<"construcing"<<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对象s建立时 调用Student类构造函数
第一 先初始化student类数据成员char name[20];
第二 初始化student类数据成员StudentID id;时候
没有StudentID类的默认构造函数都能编译 这是总么回事????

那位大哥帮小弟说说  详细的初始化过程[/size]
[/color]
3 回复
#2
sunkaidong2008-01-18 18:04
#include"iostream.h"
#include"string.h"
class StudentID
{
  public:
  StudentID(){}
  StudentID(int id)
  {
    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<<"construcing:"<<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);
}
我的需要默认构造函数的,要不编译不能通过啊
#3
lonmaor2008-01-18 19:52
代码风格很糟糕。字体也很糟糕。
[color=#800000]#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<<"construcing"<<pname<<endl;
        strcpy(name,pname);
        name[sizeof(name)-1]='\0';
        StudentID id(ssID);
    }
protected:
    char name[20];
    StudentID id;
};

int main()
{
Student s("randy",9818);
return 0;
}
[/color]

[[italic] 本帖最后由 lonmaor 于 2008-1-18 19:56 编辑 [/italic]]
#4
sunkaidong2008-01-18 21:41
楼上的没必要这样说..你即使强也是一步步来的.这样说下次就没人敢发帖子了
1