C++ 面向对象

C++ 类&对象

类用于指定对象的形式,它包含了数据表示法个用于处理数据的方法

类中的数据和方法称为类的成员

函数在一个类被称为类的成员

C++类定义

定义一个类,在本质上是定义一个数据类型的蓝图

类定义是以关键字class开头,后跟类的名称

类定义后必须跟着一个分号或一个声明列表

类成员函数-类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样

类访问修饰符-类成员可以被定义为public、private、或protected。默认情况下定义为private

构造函数&析构函数-类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用

C++拷贝构造函数-拷贝构造函数,是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象

C++友元函数-友元函数可以访问类的private和protected成员

C++内联函数-通过内联函数,编译器视图在调用函数的地方扩展函数体中的代码

C++中this指针-每个对象都有一个特殊的指针this,它指向对象本身

C++中指向类的指针-指向类的指针方式如同指向结构的指针,实际上,类可以看成是一个带有函数的结构

C++类的静态成员-类的数据成员和函数成员都可以被声明为静态的

C++继承

面向对象程序员设计中最重要的一个概念是继承

继承允许依据一个类来定义另一个类,这使得创建和维护一个程序变得更容易,达到了重用代码和提高执行时间的效果

当创建一个类时不需要重新编写新的数据成员和成员函数,只需要指定新建的类继承了一个已有的类的成员即可,这个已有的类称为基类,新建的类称为派生类

基类&派生类

C++中的多继承,一个类可以派生自多个类,他可以从多个基类继承数据和函数

访问控制和继承

根据不同的访问权限总结出不同的访问类型:

一个派生类继承了所有的基类方法,单下列情况除外:

1-基类的构造函数、析构函数和拷贝构造函数

2-基类的重载运算符

3-基类的友元函数

继承类型

当一个类派生自基类,该基类可以被继承为public、protected或private几种类型

使用不同类型的继承时,遵循以下几个规则:

公有继承(public):当一个类派生自公有基类时,基类的公有成员、保护成员也是派生类的公有成员、保护成员,基类的私有成员不能被直接被派生类访问,可以通过调用基类的公有和保护成员来访问

保护继承(protected):当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员

私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员

多继承

多继承即一个子类可以有多个父类,它继承了多个父类的特性

C++类可以从多个类继承成员,语法如下:

C++重载运算符和重载函数

C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是他们的参数列表和定义(实现)不相同

C++中的函数重载:

在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同

C++中的运算符重载

重载的运算符是带有特殊名称的函数,函数名字是由关键字operator和其后要重载的运算符符号构成的

C++ 多态

多态按字面的意思就是多种形态

当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态

虚函数

虚函数是在基类中使用关键字virtual声明的函数

在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数

纯虚函数

想要在基类中定义虚函数,以便在派生类中重新定义该函数更好的适用于对象

但又不能对虚函数给出有意义的实现,这时会用到纯虚函数

C++数据抽象

数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节

数据抽象是一种依赖于接口和实现分离的编程技术

访问标签强制抽象

使用访问标签来定义类的抽象接口。一个类可以包含零个或多个访问标签

1-使用公共标签定义的成员都可以访问改程序的所有部分。一个类型的数据抽象视图是由他的公共成员开定义的

2-使用私有标签的成员无法访问到使用类的代码。私有部分对使用类型的代码隐藏了实现细节

数据抽象的好处

1-类的内部受到保护,不会因为无意的用户级错误导致对象状态受损

2-类实现可能随着时间的推移而发生变化,以便应对不断变化的需求,或者应对那些要求不改变用户级代码错误的错误报告。

C++数据封装

所有的C++程序都有以下两个基本要素

程序语句 :这是程序执行动作的部分,被称为函数

程序数据:数据是程序的信息,会受到程序函数的影响

封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念

这样能避免受到外界的干扰和误用,从而确保了安全

数据封装引申出另一个OOP概念,即数据隐藏

数据封装是一种把数据和操作数据的函数绑定在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制

C++接口(抽象类)

接口描述了类的行为和功能,而不需要完成类的特定实现

C++接口是使用抽象类来实现的

抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关数据分离的概念

如果类中至少有一个函数被声明为虚函数,则这个类就是抽象类

设计抽象类的目的是为了给其他类提供一个可以继承的适当的基类

抽象类不能被用于实例化对象,他只能作为接口使用

可用于实例化对象的类被称为具体类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容