类class

  • 类的名字就是用户自定义的类型的名字。可以像使用基本类型那样来使用它。
  • 一个类所占用的内存空间的大小,等于所有成员变量的大小之和。
  • 类之间可以用 “=”进行赋值,但是不能用 “==”,“!=”,“>”,“<”“>=”“<=”进行比较,除非这些运算符经过了“重载”。
  • 使用类的成员变量和成员函数:
    • 对象名.成员名
    • 指针->成员名
    • 引用名.成员名
  • 类成员可被访问的范围:
    • private: 私有成员,只能在成员函数内访问。
    • public : 公有成员,可以在任何地方访问。
    • protected: 保护成员,只可以在成员函数和其的子类中访问。
  • 以上三种关键字出现的次数和先后次序都没有限制。
  • 在类的成员函数内部,能够访问:
    • 当前对象的全部属性、函数;
    • 同类其它对象的全部属性、函数。
  • 在类的成员函数以外的地方,只能够访问该类对象的公有成员。
  • 成员函数同样可以重载及缺省参数。

构造函数

  • 成员函数的一种:

    • 名字与类名相同,可以有参数,不能有返回值(void也不行)。
    • 作用是对对象进行初始化,如给成员变量赋初值。
    • 如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。
      • 默认构造函数无参数,不做任何操作。
  • 如果定义了构造函数,则编译器不生成默认的无参数的构造函数。
  • 对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数。
  • 一个类可以有多个构造函数。

复制构造函数

  • 只有一个参数,即对同类对象的引用。
  • 形如 X::X( X& )或X::X(const X &), 二者选一后者能以常量对象作为参数
  • 如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。
  • 如果定义的自己的复制构造函数, 则默认的复制构造函数不存在。
  • 不允许有形如 X::X( X )的构造函数。
  • 复制构造函数起作用的三种情况:
    • 当用一个对象去初始化同类的另一个对象时。
    • 如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的复制构造函数将被调用。
    • 如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用。

类型转换构造函数

  • 定义转换构造函数的目的是实现类型的自动转换。
  • 只有一个参数,而且不是复制构造函数的构造函数,一般就可以看作是转换构造函数。
  • 当需要的时候,编译系统会自动调用转换构造函数,建立一个无名的临时对象(或临时变量)。

析构函数

  • 名字与类名相同,在前面加‘~’,没有参数和返回值,一个类最多只能有一个析构函数。
  • 析构函数对象消亡时即自动被调用。可以定义析构函数来在对象消亡前做善后工作,比如释放分配的空间等。
  • 如果定义类时没写析构函数,则编译器生成缺省析构函数。缺省析构函数什么也不做。
  • 如果定义了析构函数,则编译器不生成缺省析构函数。
    查看我的C++学习计划

最新文章

  1. 【代码笔记】iOS-字符串的分割
  2. mac rvm升级ruby
  3. 魅族M8时期写过几个app,纪念一下曾经的自己
  4. 多线程_先产后销_运行结果有BUG
  5. openfire3.9.1 开发配置
  6. hdu 5098 双队列拓扑排序
  7. repo: 创建local manifest以及如何添加app到CM/Android build系统中
  8. 使用ffmpeg快速生成视频截图
  9. 部署WSP出现错误—已在此服务器场中安装ID为XXXXX的功能
  10. 3DMax的OFusion插件使用问题
  11. 编程练习------C/C++分别实现字符串与整数的转换
  12. DDD理论学习系列(13)-- 模块
  13. 基于HTML5的WebGL实现json和echarts图表展现在同一个界面
  14. BZOJ 1502: [NOI2005]月下柠檬树 [辛普森积分 解析几何 圆]
  15. 面向对象OOP概念描述
  16. oracle控制文件问题
  17. 关于python中的矩阵乘法(array和mat类型)
  18. scrapy-items
  19. 《Linux内核分析》第七周学习笔记
  20. Java并发工具类之同步屏障CyclicBarrier

热门文章

  1. MySQL存储引擎MyISAM与InnoDB区别总结整理
  2. Linux基础命令---删除用户userdel
  3. android textview字体加粗 Android studio最新水平居中和垂直居中
  4. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
  5. LUHN 模10 算法 银行卡校验
  6. centos 文件新建、删除、移动、复制等命令
  7. 浏览器从输入URL到页面加载显示完成全过程解析
  8. jsky使用小记
  9. java.lang.IllegalStateException: Failed to check the status of the service
  10. 在Vmware中安装CentOS7