Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4272923
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-04-18 19:41:54

             对象的初始化



定义了student类

  1. class student
  2. {
  3. private:
  4.    char name[3];
  5.    int age;
  6.    char ***;
  7. public:
  8. student();         //自己初始化无参函数 ==构造函数
  9. student(char newname[3],int newage,char new***);  //构造函数 
  10. void input(char newname[3],int newage,char new***);
  11. void output();
  12. }

初始化无参构造函数 student

  1. student::student()   初始化函数属于 student  这个 类
  2. {
  3.    name[0]='t';
  4.    name[1]='o';
  5.    name[2]='m';
  6.    ***="f";
  7.    age=21;                没有返回值
  8. }

初始化函数 构造函数 student(char newname[3],int newage,char new***);

  1. student::student(char newname[3],int newage,char new***)
  2. {
  3.     for(int i=0;i<=2;i++)
  4.     {
  5.         name[i]=newname[i];
  6.     }
  7.     age=newage;
  8.     ***=new***;
  9. }



主函数

  1. void main()
  2. {
  3.    student mystudent;   //自己定义的构造函数,
  4.    student yourstudent("jim",21,'n');  //构造函数定义
  5.    student.input("jim",21,'f');
  6.    student.output();
  7. }


    当我们定义了一个 student mystudent 对象时,就应该对他进行初始化

我们没有初始化,mystudent ,那么我们的程序在运行时为什么不会错误呢??


原因:系统会自动初始化。


   如果我们不想系统初始化,我们应该这么办呢??   使用自己定义初始化.



方法:在类中自己定义初始化函数 ,
       
  1. class    
  2. {  
  3.    .....
  4.    public:
  5.    student(); //自己初始化无参函数==构造函数
     ....
 }
   所以,当我们定义了 student mystudent 后,mystudent这个对象的属性是
  

  1.  name=tom;
  2.  ***="f";
  3.  age=21;
 
在 c++中,初始化函数专有名称  :构造函数


构造函数有特定规则:

1.函数名字 与 类 的名字一致
2.构造函数  没有返回值
3.一般把构造函数 放在 public 公开中


构造函数 是不是 唯一的呢??  不是的,可以有多个构造函数

下面的类中,有两个 构造函数,


  1.  public:
  2.  student(); //自己初始化无参函数 ==构造函数
  3.  student(char newname[3],int newage,char new***); //构造函数

注意,有参数的构造函数定义后,必须通过参数初始化成员

  1.  void main()   //注意比较  两个构造函数的不同
  2. {
  3.    ...
  4.    student mystudent;              //无参构造函数,
  5.    student yourstudent("jim",21,'n'); //带参构造函数定义,必须通过参数初始化
  6.    ....
  7. }

我们可以有多个构造函数,也可以一个构造函数也没有

因为系统会自动 初始化构造函数



  1. 如果我们没有定义构造函数,系统会自动定义一个构造函数,但是我们看不见
  2.  student::student
  3.   {
  4.   

  5.   }


这点很重要:

系统构造的无参函数 与 我们自己定义的无参函数一摸一样,

当我们自己定义了一个无参函数,那么系统定义的无参函数就不起作用了






阅读(574) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~