c/c++ 面向对象的特性

面向对象的3大特征是:封装,继承,多态

面向对象的5大原则:单一职责原则(Single-Resposibility Principle):

                              开放封闭原则(Open-Closed principle):

                              Liskov替换原则(Liskov-Substituion Principle)

                              依赖倒置原则(Dependecy-Inversion Principle):

                              接口隔离原则(Interface-Segregation Principle):


类和对象:类是由数据成员和成员函数构成的,是抽象的,但对象是具体的

封装:

所谓封装,就是把客观的事物封装成抽象的类,并且类可以让自己的数据和方法只让可信的类和对象操作,对不可信的进行信息隐藏。它可以隐藏实现代码,使得代码模块化

一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体,在一个对象内,某些代码或者是某些数据是可以私有的,不能被外界访问

对象对数据内部提供了不用级别的保护,以防止程序中无关的部分意外的或者错误的改变了对象的私有部分

封装性:

拷贝函数

               浅拷贝:指的是在对象复制时,只是对对象中的数据成员进行简单的赋值,默认拷贝构造函数执行的也是浅拷贝

               深拷贝:对于对象中动态成员,就不能仅仅简单的赋值了,而应该重现动态分配空间

构造函数与析构函数

               构造函数主要用来初始化数据

               析构函数主要用来释放堆区申请的内存空间

指针与引用

               相同点是:指针指向一块内存,它的内容是所指的内存的地址;而引用仅仅是某块内存的别名

               不同点是:指针是一个实体,而引用仅仅是个别名

                                   引用只能在定义时被初始化,之后不可变;指针可变;引用从一而终,指针可以见异思迁

                                   引用没有const,指针有const,const的指针不可变

                                   引用不能为空,指针可以为空

                                   sizeof(引用)得到的是所指向的变量的大小,而sizeof(指针)得到的是指针本身的大小

                                   指针和引用的自增++运算意义不一样

                                   引用是类型安全的,而指针不是,因为引用比指针多了类型检查



继承:

所谓继承,就是让某个类型的对象获得另一个对象的属性的方法

继承的能力是:继承的类可以使用现有的类的所有功能,并且可以无需编写原来类的基础上对这些类进行扩展,

通过继承创建的类称为子类或者派生类,被继承的类称为基类,派生类,超类

继承的实现方法:

1:实现继承是指在原来类的基础上直接使用原来类的属性和方法而无需编写代码的能力

2:接口继承是指仅使用方法和属性的名称,但是子类必须提供实现的功能


继承性:

派生类的继承方式

公有继承:基类的共有成员和保护成员作为派生类的成员时,他们都保持原来的状态,而基类的私有成员仍然是私有的

保护继承:基类的所有成员公有成员和保护成员都成为派生类的保护成员,而且只能被它的派生类成员函数或者友元访问,基类的私有成员仍然是私有的

私有继承:基类的共有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类访问


友元函数:是一种定义在类外部的普通函数,但是它需要在类体内进行说明

                      friend 类型友元函数表

特点:友元函数可以访问类中的所有成员,一般函数只能访问类中的公有成员

            某类的友元函数的作用域但并非该类作用域

            友元函数破坏了面向对象程序设计类的封装性,所以友元函数若不是必须使用,尽量少用

构造函数.复制构造函数.析构函数.赋值运算符不能被继承





多态:

一个类实例的相同方法在不用情形有不用表现形式。多态机制使得具有不用内部结构的对象可以共享相同的外部接口。虽然针对不用对象的具体操作不同,但通过一个公共的类,这些操作可以通过相同的方式被调用

多态实现的两种方法:父类指针指向子类对象

                                       将一个基类的引用类型赋值为它的派生类实例


this指针:

一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果,this作用域是在类的内部,当在类的非静态(就是前面没加static)。成员函数中访问类的非静态成员的时候,编译器会自动将本身的地址作为一个隐含参数传递给函数。也就是说,各成员的访问均通过this指针进行,但是值得注意的是,静态成员没有thus指针


多态性:

相同对象收到不用消息或不同对象接受相同的命令而做出的不同反应叫做多态

动态分为静态绑定和动态绑定

静态绑定:函数重载,在编译时函数和函数的实现就关联在一起,主要是通过重载和模板实现,在宏多态中,是通过定义变量,编译时直接吧变量替换,实现宏多态

动态绑定:主要通过继承和虚函数的实现,父类指针或者引用你能够指向子类对象,调用子类的虚函数,所以在编译时是无法确定调用那个虚函数,每个子类都维护这一张虚函数表


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值