C++的构造函数在创建对象时调用,分配内存空间,多少个对象(对象数组)就调用几次构造函数;析构函数在调用结束时调用(可以添加一些最后的处理)以释放内存给其它来用。对于同类型同生命期的对象,先创建的对象,先调用构造函数,但调用析构函数顺序在最后。

构造函数可以有多个(重载),构造函数也可以带参数(也可以设置默认值(相当于多个重载函数,所以有默认值参数的构造函数就不要在重载多个了否则会出错))从而可以给不同对象传递不同参数,参数的赋值可以在类定义中进行".cpp",也可以在类对象声明中用列表化传递,参数也可以只给类型。

析构函数只有一个不能重载,对象的析构顺序和构造顺序相反。

对象数组的初始化方法:当构造函数只有一个参数时可以“大括号逗号隔开”,当构造函数参数有多个时可以用“大括号中构造函数(参数列表1),构造函数(参数列表2),,,构造函数(参数列表n)}"

指针:

类对象也可以有指针,用以指向对象的首地址;

类对象的数据成员也可以有指针,和一般类型对象指针没有什么区别。

类对象的函数成员的数据指针与一般的函数指针不同,声明方法:返回值类型(类型::*pfun)(参数列表)=&类名::函数(),注意因为类的函数成员是对所有的对象的,所以指针也要指向类的函数而非对象的函数,但调用时要用"对象.*pfun()"

this指针:是隐式的默认传递的,所以不同对象调用同类的成员函数时系统能区分调用的是哪个对象的数据成员,当然也可以显示调用。

C++学习之构造函数和析构函数及指针的更多相关文章

  1. 学习C++ -> 构造函数与析构函数

    学习C++ -> 构造函数与析构函数 一.构造函数的介绍    1. 构造函数的作用        构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用 ...

  2. C++学习笔记-构造函数和析构函数

    构造函数和析构函数是C++的重要组成部分,了解构造函数和析构函数有助于深入了解C++ 构造函数 构造函数产生的原因 在C++中,有时候需要在对象创建的时候初始化数据,如果采用普通函数的话,每次初始化都 ...

  3. 鸡啄米:C++编程之十四学习之构造函数和析构函数

    1. 本人学习鸡啄米课程的笔记记录,用来记录学习的历程和进度 2. 构造函数 我们在声明一个变量时,如果对它进行了初始化,那么在为此变量分配内存空间时还会向内存单元中写入变量的初始化.声明对象有相似的 ...

  4. C++学习之类的构造函数、析构函数

    在C++的类中,都会有一个或多个构造函数.一个析构函数.一个赋值运算操作符.即使我们自己定义的类中,没有显示定义它们,编译器也会声明一个默认构造函数.一个析构函数和一个赋值运算操作符.例如: //声明 ...

  5. C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序

    基类和派生类:构造函数和析构函数的执行顺序 在Visual Studio中,新建控制台工程,构造类如下: #include<iostream> using namespace std; c ...

  6. C++基础学习9:构造函数和析构函数

    1.  构造函数用来对类对象进行初始化,它完成对内存空间的申请.赋初值等工作.  2.  析构函数主要是用来做清理工作的. 补充:函数名或变量名前面有"::"但是没有类名,说明这是 ...

  7. c++学习之对象和类——构造函数和析构函数

    再认真理一遍~ 0.类 这里先来定义一个类,便于后面的理解.参考C++ Primer Plus class Stock { private: std::string company; long sha ...

  8. C++学习笔记(1)-构造函数与析构函数

    1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象. 2.若没有提供任何构造函数,那么c++自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而 ...

  9. C++学习之路—继承与派生(二):派生类的构造函数与析构函数

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 由于基类的构造函数和析构函数是不能被继承的,所以 ...

随机推荐

  1. SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置

    一.准备工作: 1. JDK -> jdk1.6.0_17 安装(环境变量配置): JAVA_HOME = C:\ jdk1.6.0_17; PATH = %JAVA_HOME%\bin; %J ...

  2. Visual Studio 2012自动添加注释(如版权信息等)

    http://blog.csdn.net/jiejiaozhufu/article/details/16357721注释宏的原码 /********************************** ...

  3. jmeter MD5加密

    MD5.jar已经上传到博客园的文件中 第一步  添加变量${Qpassword} 第二步 调用MD5加密 import hehe.Str2MD5;String res = new Str2MD5() ...

  4. Web信息架构:设计大型网站(第3版) [美]Peter Morville 中文PDF扫描版

    新版Web信息架构设计大型网站针对新技术做了全面更新——搭配新颖范例.全新场景及最佳实践信息——但是,其焦点依然放在基础原理上.其结构严谨,图文并貌,内容涵盖了信息架构基本原理和实践应用的方方面面. ...

  5. C#知识点总结系列:3、C#中Delegate和Event以及它们的区别

    1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁 ...

  6. namespace/symbol/:keyword/::keyword in Clojure

    此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.关键字(:keyword/::keyword):   最近在学习使用clojure.spec(验证数据的 ...

  7. ECMAScript 6 一些有意思的特性

    主要参考了下面两篇博文,对ES6的新特性做一些笔记,加深印象 ES6新特性概览 - 刘哇勇 - 博客园 es6快速入门 - _marven - 博客园 *号函数 迭代函数生成器 我能想到的生成器使用场 ...

  8. Sum of LCM (lcmsum)

    题目 [题目描述] 对于 $ A_1, A_2, \ldots, A_N $ ,求$\sum_{i = 1}^N \sum_{j = 1}^N \mathrm{lcm}(A_i, A_j)$ 的值. ...

  9. Python 文件和异常

    一.从文件中读取数据 #!/usr/bin/env python with open('pi') as file_object: contents = file_object.read() print ...

  10. web安全问题-cookie

    web安全问题 cookie 1.cookies只能设置过期 不能删除 <script> now.toGMTString() => 事件可以用来设置cookie document.c ...