构造器和析构器

让编程改变世界

Change the world by program


定义构造器

回顾:之前我们讨论了使用面向对象的编程技术开发程序最基本步骤:

定义一个有属性和方法的类(模板)

为该类创建一个变量(实现)

这是OOP技术的基础,小甲鱼接着将逐步向大家介绍一些更复杂和更有用的概念。 首先是构造器,它是类里的一种特殊的方法。

构造器和通常方法的主要区别:

构造器的名字必须和它所在的类的名字一样 系统在创建某个类的实例时会第一时间自动调用这个类的构造器 构造器永远不会返回任何值

创建构造器,需要先把它的声明添加到类里:

class Car {

Car( void );

}

注意大小写与类名保持一致。在结束声明之后开始定义构造器本身:

Car::Car(void)    // 不用写 void Car::Car(void) {

color = “WHITE”;

engine = “V8”;

wheel = 4;

gas_tank = FULL_GAS;

}   好,到这里我们就可以自己着手对之前打造的那辆跑车代码进行”改装”了吧? 代码下载地址

构造对象数组

之前我们已经说过,数组可以是任何一种数据类型,当然也包括对象。 如:Car mycar[10]; 调用语法依旧是:mycar[x].running; 注:x代表着给定数组元素的下标。 好了,自己造十几辆法拉利”自慰下”。

Pay attention

每个类至少有一个构造器,如果你没有在类里定义一个构造器,编译器就会使用如下语法替你定义一个:ClassName::ClassName() { } 这是一个没有代码内容的空构造器,除此之外,编译器还会替你创建一个副本构造器(CopyConstructor)。(这个迟些给大家介绍) 这一切都发生在幕后,而小甲鱼在这里给大家提出主要目的是希望大家能够了解构造器有多么重要。 一种常见的做法是在创建对象的同时做一些事情(构造器背后搞鬼),在对象创建出来之后用另一个方法做同样或者不同的事情。 如:

Car mycar;

mycar.setColor(“Yellow”);

定义析构器

从前边的内容我们了解到,在创建对象时,系统都会自动调用一个特殊的方法,即构造器。 相应地,在销毁一个对象时,系统也应该会调用另一个特殊方法达到对应效果? 没错,这就是析构器。   一般来说,构造器用来完成事先的初始化和准备工作(申请分配内存),析构器用来完成事后所必须的清理工作(清理内存)。 构造器和析构器两者相辅相成,有许多共同之处。首先,析构器有着和构造器/类一样的名字,只不过前边多了一个波浪符“~”前缀。 class Car {

Car(void);

~Car();

} 其次,析构器也永远不返回任何值。 另外,析构器是不带参数的。所以析构器的声明永远是如下格式:~ClassName(); 在我们刚刚的例子中析构器可有可无。但是在比较复杂的类里,析构器往往至关重要(可能引起内存泄露)。 例如某个类的构造器申请了一块内存,我们就必须在析构器里释放那块内存。   不是每一滴牛奶都叫特伦苏 [caption id="attachment_466" align="aligncenter" width="300"] 不是每一滴牛奶都叫特伦苏[/caption]   演示:请详细观看视频演示(代码下载地址) [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://urlxf.qq.com/?J3eYnqy']视频下载[/Downlink] [Downlink href='http://kuai.xunlei.com/d/LKOJJOXAFUPR']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/02/13/3847160.html

构造器和析构器 - C++快速入门15相关推荐

  1. 继承机制中的构造器和析构器 - C++快速入门17

    继承机制中的构造器和析构器 让编程改变世界 Change the world by program 继承机制中的构造器和析构器 正如此前所讲解的,C++ 支持程序员自己写出将创建或销毁一个对象时自动调 ...

  2. 多继承中构造器和析构器的调用顺序

    多继承中构造器和析构器的调用顺序: 构造器的调用顺序就像盖房子,从最基层开始: 析构器的调用顺序就像拆房子,从最顶层开始:

  3. C#锐利体验-第五讲 构造器与析构器(转)

    第五讲 构造器与析构器 南京邮电学院 李建忠(cornyfield@263.net) 索引   C#锐利体验   "Hello,World!"程序   C#语言基础介绍   Mic ...

  4. Expression Blend实例中文教程(11) - 视觉管理器快速入门Visual State Manager(VSM)

    Visual State Manager,中文又称视觉状态管理器(简称为VSM),是Silverlight 2中引进的一个概念.通过使用VSM,开发人员和设计人员可以轻松的改变项目控件的视觉效果,在项 ...

  5. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  6. 最新《小甲鱼C++编程快速入门教程》

    这套教程一共40讲,内容真心不错,其实大家看看目录也就能得出结论了  ===============课程目录=============== <鱼C论坛小甲鱼C++编程快速入门培训系列教程> ...

  7. 小甲鱼C++快速入门——第四天

    视频14-介绍对象 对象和结构的区别 对象的内部可以有变量[属性]和函数[方法],结构通常只有变量. #include <iostream> using namespace std; co ...

  8. C++学习记录(B站小甲鱼C++快速入门视频)

    文章目录 C++特点: 封装 抽象 继承 多态 从一个小程序开始 第二个小程序(IO) cin跟cout对象的多个方法 第三个小程序(File) 多种文件操作用or操作符`"|"` ...

  9. C++快速入门学习笔记(一)

    一.C++语言与面向对象思想介绍 C++是一种语言,仅仅是它的语法.特性.标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必项先要打好基础. C语言有一个优点,即它的速度可以很快.写出来的程 ...

最新文章

  1. LDialog基于DialogFragment封装的库,也许是一个Nice的库
  2. org.springframework.security.web.util.TextEscapeUtils
  3. ASP.NET 缓存与SQL Server结合使用
  4. 计算机网络子网划分路由配置实验报告,洛阳理工学院+计算机网络+实验5子网划分路由配置...
  5. 计算机专业杀毒,计算机病毒查杀
  6. Java学习二:Javac Java的学习(原创)
  7. XDOJ-1002-小W的塔防(dp)
  8. 家用车多少马力才够用?
  9. CIO众论:转型路径和新技术实践
  10. Windows as a Service(3)——使用SCCM管理Windows10更新
  11. phpstudy mysql配置_phpstudy mysql数据库文件位置在哪
  12. Windows查询端口的进程
  13. 网站性能测试工具 webbench 的安装和使用-linux
  14. LoginActivity实现
  15. 谷歌正式宣布退出中国 关闭google.cn
  16. 史上最详细阿里云服务器搭建网站流程(图文教程)
  17. 计算机word虚线在哪里,电脑虚线怎么打出来
  18. python空格转义字符_python空格转义
  19. Laravel验证器的使用
  20. 用AI从零开始创建一个宫崎骏的世界

热门文章

  1. java test报错_Java 单元测试报错
  2. 5 华为兼容性 双指缩放_华为EMUI10“滚屏翻译”之背后的学问
  3. 微带线特性阻抗计算公式_利用HFSS计算微带线的特性阻抗
  4. 阿里巴巴商城源码JAVA_阿里巴巴Dubbo实现的源码分析
  5. java计算并显示学生的成绩_Java开学测试-学生成绩管理系统
  6. MyObjectUtil对象工具类
  7. 我的新书《Java编程讲义》新鲜出炉啦,欢迎订阅
  8. 逻辑漏洞之任意用户登陆漏洞
  9. Apache2.4开启php
  10. Spring Cloud微服务实战:外卖订餐系统