Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202406
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: C/C++

2014-11-03 08:14:37

一般而言所有的对象都需要一个确定的初始状态,一旦由于失误的原因,对象没有初始化,那么结果将是不确定的。没有初始化的对象其内部变量的值是不定的。


C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数,构造函数在定义时可以有参数,但是没有任何返回类型的声明。

 

构造函数的调用:一般情况下,c++编译器会自动调用构造函数,在一些情况下则需要手工调用构造函数


成员函数的重载:类的成员函数和普通函数一样可以进行重载,并遵守相同的重载规则


两个特殊构造函数:

无参构造函数:当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空。

拷贝构造函数:当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制。

构造函数是c++中用于初始化对象状态的特殊函数,构造函数在对象创建时自动被调用,构造函数和普通成员函数都遵循重载规则,拷贝构造函数是对象正确初始化的重要保证。

 

C++中提供了初始化列表对成员变量进行初始化,语法规则:constructor():: constructor(): m1(v1), m2(v1,v2), m3(v3) {}

成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关,初始化列表先于构造函数的函数体执行



初始化是用已存在的对象或值对正在创建的对象进行初值设置,赋值是用已存在的对象或值对已经存在的对象进行值设置。

一般而言所有被销毁的对象都需要做清理。在构造函数中申请的资源需要在对象销毁前释放。

C++中的类可以定义一个特殊的成员函数清理对象,这个特殊成员函数叫做析构函数,

定义:~ClassName()

析构函数没有参数也没有任何返回类型的声明,析构函数在对象销毁时自动被调用。


构造函数与析构函数的调用秩序:当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同,之后调用自身类的构造函数,析构函数的调用秩序与对应的构造函数调用秩序相反。


析构函数是c++中对象销毁时做清理工作的特殊函数,析构函数在对象销毁时自动被调用,析构函数是对象所使用的资源及时释放的保障,析构函数的调用秩序与构造函数相反。

 

可以直接调用构造函数吗?直接调用构造函数将得到一个临时对象,然后又被析构函数释放。构造一般只给编译器调用和在声明构造函数时手工调用,构造函数不支持调用构造函数。


 

阅读(1419) | 评论(0) | 转发(0) |
0

上一篇:类的封装

下一篇:静态成员函数

给主人留下些什么吧!~~