C++郑莉笔记 chapter4 类与对象

chapter4 类与对象

面向对象程序的特点

  • 抽象(abstraction) 数据抽象与行为抽象
  • 封装(encapsulation) 将抽象出的数据与行为结合成一个类,作为类的成员
  • 继承(inheritance) 从一般派生出特殊,解决代码的重用
  • 多态(polymorphism) 一段程序能处理多种类型对象的能力(强制多态、重载多态、类型参数化多态、包含多态)

类和对象

  • 类的成员函数与数据成员
  • 访问权限(public protected private注意三者区别)
  • 对象是某个类的实例

类的成员函数

  • 对于一般的成员函数在类内声明,类外实现
  • 目的对象
  • 含默认参数的成员函数
  • 内联函数 隐式声明:在类内实现函数;显式声明:加入inline关键字

构造函数与析构函数

构造函数

  • 作用:利用特定的值构造对象,对对象进行初始化

  • 构造函数函数名与类名一致,且无返回值,通常声明为公有函数

  • 默认构造函数

    • 无任何构造函数则由编译器生成,数据成员存在初始值则用初始值,否则为默认方式使用未定义值
    • 编译器不能为包含无默认构造函数的复合类生成默认构造函数
    • 重载形式:有参(可采用列表初始化方式),无参
  • 委托构造函数,即一个构造函数调用了另一个构造函数

  • 复制(拷贝)构造函数,用一个已存在对象的属性初始化一个新对象,

    • 系统通常含有一个默认复制构造函数
    • 调用方式class_name new_obj=old_objclass_name new_obj(old_obj)
    • 区分深拷贝与浅拷贝
  • 析构函数

    • 不接受参数,用于完成对象删除前的清理工作,
    • 其在对象生存期结束前调用,调用完成后对象消失,内存释放
    • 系统通常也会生成一个空的默认析构函数
  • default与delete 用于显式指定使用默认或删除构造或析构函数 如删除默认构造函数class_name()=delete;

      class person{
          public:
          person(int Nage,string Nname):age(Nage),name(Nname){};//有参构造函数,使用列表初始化
          person():person(18,"JACK"){}//委托构造函数
          person(person &old_person){
              age=old_person.age;
              name=old_person.name;
          }
          ~person(){};//析构函数
          private:
          int age;
          string name;
          };
    

类的组合

  • 构造函数调用顺序为内嵌对象在类中出现顺序,最后调用本类的构造
  • 析构函数调用顺序正好相反
  • 前向引用声明

结构体,联合体,枚举

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值