C++学习笔记面向对象持续更新

属性与变量的区别

  1. 属性位于类中,而变量位于类外或方法中;
  2. 属性与变量的初始化形式不同,属性不能使用()初始化;
  3. 属性的类型可以是任意类型,如果属性是数组类型,必须指定初始化大小;
  4. 同一类中属性名不能冲突,一个类就是一个作用域;

方法和函数的区别

  1. 类中的定义的是方法,类外定义的叫函数;
  2. 方法和函数都可以先声明,再定义,方法定义时需要指明类名::(作用域符)
  3. 方法和函数都可以重载(方法名相同,参数类型或者个数不同,不能通过返回值确认是否为重载)
  4. 方法和函数的形式参数都可以有默认值
  5. 方法定义在类中被称为内联函数,定义在类外加上inline也是内敛方法.

对象的创建

对象可以是普通对象存储在栈中,也可以是指针对象,存储在堆中,需要手动释放,操作一个对象是通过访问对象的成员来实现的(对象名.方法名,指针对象名->方法名)

类和对象的关系

  1. 抽象与具体的关系
  2. 类是创建对象的模板,通过这个模板可以创建多个具有相同属性和行为,类在运行时是静态的,不改变的,类名是类的标识
  3. 对象是某个类的实例,创建一个对象的过程就是类的一次实例化
  4. 对象需要创建,对象是动态的,具有一定的生命周期

类的特殊成员

构造方法

构造方法如果不声明访问权限,默认为private

实例化

指的是创建对象并在内存中分配空间

初始化

指的是给对象赋初始值

构造方法的列表初始化:

类名::构造方法名(数据类型 形式参数名称, 形式参数名称1 形式参数名称2):成员变量1(形式参数1),成员变量2(形式参数2){}

析构方法

作用

删除对象前清理对象所指向的内存空间及其一些清理工作比如(关闭文件,关闭数据库连接等)

什么时候使用它?

类中的属性有指针类型,可能指向动态分配的内存,这就需要对象消失前调用析构方法释放堆中的内存

定义析构方法

~类名(){}

析构方法注意事项

  1. 析构方法在类中只能有一个,不能重载
  2. 无法显示调用析构方法,在对象被删除前编译器会自动调用析构函数
  3. 如果未自定义析构方法,类中默认会有一个公有的析构函数,方法体为空
  4. 多个对象析构时,析构的顺序和构造的顺序相反

拷贝构造方法

作用

创建对象时从已有的对象拷贝过来,即克隆对象参数类型是常量类型,如果有类似指针这种复杂数据类型,拷贝需要拷贝堆中内存的值,必须自定义拷贝构造函数.

为什么形式参数是对象的引用?

如果形式参数是对象需要调用拷贝构造方法,拷贝构造方法需要把实参拷贝一份,就无限调用了.如果是引用形式参数对象是实参的引用,不用拷贝在时间和空间上的效率,

为什么形式参数是const?

const修饰的对象不能修改对象的属性值,const的目的是为了保护实参对象不被修改

如何定义拷贝构造方法?

类名(const 类名 &变量名){}

赋值函数(重载赋值操作符)

作用

将一个对象赋值给另一个已有的对象,会调用赋值函数

什么时候使用它?

类中默认存在一个赋值函数,实现简单的赋值,如果类中存在类似指针类型,需要自定义赋值函数,实现堆中数据的复制

继承

见名知意,被继承的类我们常常称为父类,基类,超类,新定义的类被称为子类,派生类

作用

提高代码复用性

如何实现继承?

class 类名:访问权限修饰符 父类名{}

什么是方法的隐藏

简单的说就是子父类中同时定义了一个同名的方法,不论参数返回值是否相同,父类该方法都会被隐藏

在继承中构造和析构的顺序

单继承情况下

构造顺序:父类->子类
析构顺序:子类->父类

多继承情况下

构造顺序由父类的继承顺序诸逐个构造,依旧为先是父类然后是子类
析构顺序是先析构子类,然后按照继承相反的顺序析构

多态

静态多态

动态多态

重载操作符的目的

赋予操作符特殊的功能,让它适用于更多的数据类型,尤其是自定义的最常见的操作符=
而类中原本的赋值函数只是简单的实现了把参数对象的属性赋值给当前属性,如果类中有指针,赋值函数只是把指针的地址进行了赋值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值