首页 > 编程 > C++ > 正文

C++教程:C++对象初始化

2020-05-23 14:26:03
字体:
来源:转载
供稿:网友
在声明一个局部变量的时候,我们必须对它进行初始化,否则它的数据是一个不确定的值。同样,在声明一个对象的时候,也应该对它进行初始化。不过一个对象可能有许许多多的成员数据,对对象的初始化就意味着对许许多多的成员数据进行初始化。变量的初始化只需要一句赋值语句就能完成,而对象的初始化可能要许许多多的赋值语句才能完成。因此,我们常常把这许许多多的语句写在一个函数中。比如我们为链表结点类编写了一个名为init的初始化函数:
class Node//定义一个链表结点类
{
   public:
   ……
   void init(int i,char c);
   ……
   private:
   int idata;//存储数据保密
   char cdata;//存储数据保密
   Node *prior;//前驱结点的存储位置保密
   Node *next;//后继结点的存储位置保密
};
void Node::init(int i,char c)
{
   idata=i;//初始化idata
   cdata=c;//初始化cdata
   prior=NULL;//初始化前驱结点指针
   next=NULL;//初始化后续结点指针
}
这下好了,我们创建一个链表结点对象之后只要运行一次init函数就能将其初始化了:
   Node a;
   a.init(0, '0');

既然init函数担负着初始化对象的重任,那么它就必须和对象的声明“出双入对”了。万一忘记对对象进行初始化,程序就可能会出错。这就像在病毒肆虐的今天,保证电脑安全的病毒防火墙必须在开机之后立刻运行一样。万一哪天开了电脑忘记运行病毒防火墙,那么后果可能很严重。
不过,你使用的病毒防火墙是你每次开机以后自己去点击运行的么?那样岂不是很麻烦?你是否知道,我们使用的病毒防火墙往往是随系统一起启动的?

这给了我们一些启示:有的程序能够随着系统的启动而自动运行,那么会不会有一种函数,随着对象的创建而自动被调用呢?有!那就是构造函数(Constructor)。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表