我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C++ -> C++综合 -> 文章内容  
栏目导航
· C++综合 · C++通信
· C++视图 · C++图象
· C++系统 · C++多媒体
· C++界面 · C++文件
· C++数据库 · C++网络
热门文章
· C/C++中的结构体
· C/C++中结构体(struct..
· C++中类的继承特性
· C++启蒙之控制结构
· C++面向对象编程入门:..
· C++面向对象编程入门:..
· 理解C++面向对象程序设..
· C++类对象的复制-拷贝..
· C++类静态数据成员与类..
· C++友元的入门教程
· C++中类的多态与虚函数..
· 类的分解,抽象类与纯..
相关文章

· C++面向对象编程入门..
· 理解C++面向对象程序..
· C++中禁止异常信息传..
· C++中的EXIT与析构函..
· 苹果坦承:除Windows..
查看更多与C++面向对象编程入门:构造函数与析构函数相关内容

C++面向对象编程入门:构造函数与析构函数
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 17:11:58  发布人:ghostfire

减小字体 增大字体

  请注意,这一节内容是c++的重点,要特别注意!

  我们先说一下什么是构造函数。

  上一个教程我们简单说了关于类的一些基本内容,对于类对象成员的初始化我们始终是建立成员函数然后手工调用该函数对成员进行赋值的,那么在c++中对于类来说有没有更方便的方式能够在对象创建的时候就自动初始化成员变量呢,这一点对操作保护成员是至关重要的,答案是肯定的。关于c++类成员的初始化,有专门的构造函数来进行自动操作而无需要手工调用,在正式讲解之前先看看c++对构造函数的一个基本定义。

  1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。

  2.若没有提供任何构造函数,那么c++提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。

  3.只要类中提供了任意一个构造函数,那么c++就不在自动提供默认构造函数。

  4.类对象的定义和变量的定义类似,使用默认构造函数创建对象的时候,如果创建的是静态或者是全局对象,则对象的位模式全部为0,否则将会是随即的。

  我们来看下面的代码:

#include<iostream> 
usingnamespacestd;  
classStudent 
{ 
   public: 
   Student()//无参数构造函数 
   { 
     number=1; 
     score=100; 
   } 
   voidshow(); 
 
   protected: 
   intnumber; 
   intscore; 
 
}; 
 
voidStudent::show() 
{ 
   cout<<number<<endl<<score<<endl; 
} 
 
voidmain() 
{ 
   Studenta; 
   a.show(); 
   cin.get(); 
}

  在类中的定义的和类名相同,并且没有任何返回类型的Student()就是构造函数,这是一个无参数的构造函数,他在对象创建的时候自动调用,如果去掉Student()函数体内的代码那么它和c++的默认提供的构造函数等价的。

  构造函数可以带任意多个的形式参数,这一点和普通函数的特性是一样的!

  下面我们来看一个带参数的构造函数是如何进行对象的始化操作的。

  代码如下:

#include<iostream> 
usingnamespacestd;  
classTeacher 
{ 
   public: 
   Teacher(char*input_name)//有参数的构造函数 
   { 
     name=newchar[10]; 
     //name=input_name;//这样赋值是错误的 
     strcpy(name,input_name); 
   } 
   voidshow(); 
 
   protected: 
   char*name; 
 
}; 
 
voidTeacher::show() 
{ 
   cout<<name<<endl; 
} 
 
voidmain() 
{ 
     //Teachera;//这里是错误的,因为没有无参数的构造函数 
   Teachera("test"); 
   a.show(); 
   cin.get(); 
}

  我们创建了一个带有字符指针的带有形参的Teacher(char *input_name)的构造函数,调用它创建对象的使用类名加对象名称加扩号和扩号内参数的方式调用,这和调用函数有点类似,但意义也有所不同,因为构造函数是为创建对象而设立的,这里的意义不单纯是调用函数,而是创建一个类对象。

查看更多与C++面向对象编程入门:构造函数与析构函数相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      理解C++面向对象程序设计中的抽象理论       C++面向对象编程入门:类(class)
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图