C++
Feiffer_Hu
Android wifi framework工程师、单片机工程师、嵌入式初级驱动工程师、BSP_Sensor驱动工程师
展开
-
6.14、STL 标准模板库 -- 泛型编程
STL 标准模板库 – 功能类 – 泛型编程 模板的升级六部分1 、容器 containers – 保存数据的内存 new2、迭代器 iteratos – 上次的结构,作为下一次的变化的基础 相当于for里面的 i 也是一个类3、空间配置器 allocator –4、配接器 adapters –5、算法 algorithms – 实现某种功能的方式6、仿函数 functors – ..原创 2020-06-02 17:30:15 · 201 阅读 · 0 评论 -
6.13、智能指针
shared_ptr ---- 共享资源的智能指针,直到指向这个地址的所有指针都消亡才释放内存被用来表示共享的拥有权。也就是说,当两段代码都需要访问一些数据,而它们又都没有独占该数据的所有权(从某种意义上来说就是该段代码负责销毁该对象)。shared_ptr是一种计数指针。当引用计数变为0时,shared_ptr所指向 的对象就会被删除。Shared_ptr<类型> p1 = make_shared<类型>(对象创建)Shared_ptr<类型> p..原创 2020-06-02 17:29:13 · 146 阅读 · 0 评论 -
6.12、转换函数
转换函数1、显示转换2、隐式转换3、内置类型 — 基础的类型 int char ;内置运算符 = + -类作为C++中的自定义类型,可以实现类型的转换。当需要由某种类型转换为自定义类型时,只需要在自定义类型类中创建一个要由某种类型转换的构造函数,即:Class A{ A(int x) { }};就可以实现由 int类型的变量转换为A类型的对象explicit关键字在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式..原创 2020-06-02 17:27:20 · 427 阅读 · 0 评论 -
6.11、异常
由于一些外部因数而不是程序本来的错误导致程序不能继续执行— tryC++的异常处理机制有3部分组成:一般的,throw抛出的异常要和catch所捕获的异常类型匹配异常处理的一般格式为:异常类型有:标准异常(c++定义的异常)和自定义异常标准异常类...原创 2020-06-02 17:20:14 · 86 阅读 · 0 评论 -
6.10、联编
动态联编1、是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定。C++中一般情况下联编也是静态联编,但是一旦涉及到多态和虚拟函数就必须要使用动态联编了2、通过一个虚函数表(Virtual Table)的技术实现动态联编,也意味着实现了多态。3、在如果一个类中存在虚函数时,当我们创建这个类对象时就会在开始位置多4个指针地址空间用作存储这个类中多个虚函数的地址表(虚函数表),即意味着通过对象调用虚函数时,会通过这4个字节找到虚函数执行。4、当在基类中有虚函数时,派生类中同样.原创 2020-06-02 17:18:33 · 320 阅读 · 0 评论 -
6.9、重载
成员函数覆盖(override, 也称重写) ---- 是指派生类重新定义基类的虚函数,特征如下:不同的作用域(分别位于派生类与基类)函数名字相同参数相同基类函数必须有virtual关键字, 不能有static返回值相同重写函数的权限访问限定符可以不同成员函数重载(overload)-----是指函数名相同,参数不同(数量、类型、次序),特征如下:相同的范围(在同一个作用域中)函数名字相同参数不同virtual关键字可有可无返回值可以不同成员函数隐藏(也称重.原创 2020-06-02 17:16:56 · 118 阅读 · 0 评论 -
6.8、虚函数
虚函数(virtual function)有时候,希望子类和基类有相同的方法,但是行为却有所不同,这就是多态。这里就引入了虚函数的概念。注意:简单继承,is-a的关系不是多态; 另外函数重载,一般应该是行为类似,使用方法不同,也不是多态。简单地说,用virtual修饰的成员函数,就是虛函数。虚函数的作用就是实现多态性(Polymorphism)。多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。虚函数的限制如下:非类的成员函.原创 2020-06-02 17:16:08 · 183 阅读 · 0 评论 -
6.7、多态polymorphism
多态polymorphism: 目的是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一一个接口调用到适应各自对象的实现方法。 一个接口,多种方法1、 程序在运行时才决定调用的函数,多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略2、不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法3、多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和”how..原创 2020-06-02 17:13:14 · 206 阅读 · 0 评论 -
6.6、继承inheritance
继承inheritance: 扩展己存在的代码,目的是为了代码重用c++最重要的特征是代码重用,通过继承机制可以利用已有的数据类型来定义新的数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。一个B类继承于A类,或称从类A派生类B。这样的话,类A成为基类(父类), 类B成为派生类(子类)基类派生类1、在创建派生类对象时,会调用基类的构造函数2、在派生类对象消亡时,会调用基类的析构函数 ----- 因为在继承的时候,会创建一个匿名对象派生类定义格式:Class..原创 2020-06-02 17:11:46 · 196 阅读 · 0 评论 -
6.5、封装wrap
封装wrap: 实现细节隐藏,使得代码模块化。把成员数据和成员函数封装起来,通过公共的成员接口进行成员数据的操作。封装1、把变量(属性)和函数(操作)合成一个整体,封装在一个类中2、对变量和函数进行访问控制提供一种机制能够给属性和行为的访问权限控制住注意:类的声明时,函数在类外的定义和在类中的定义方式(参考代码)...原创 2020-06-02 17:07:23 · 296 阅读 · 0 评论 -
6.4、模板 -- 不依赖类型
让类或者函数声明为一种通用的类型,只关心代码功能的实现,不用去关心要实现相关功能各个参数的类型,把各个参数类型都以变量的形式表示出来就行,使得类中的某些数据成员或者成员函数的参数、返回值在实际使用时可以是任意类型。使用模板的目的就是能够让程序员编写与类型无关的代码。模板是一种对类型进行参数化的工具,通常有两种形式:函数模板 ---------函数模板针对仅参数类型不同的函数类模板------------类模板针对仅数据成员和成员函数类型不同的类注意:模板的声明或定义只能在全局,命名空..原创 2020-06-02 17:06:20 · 279 阅读 · 0 评论 -
6.3、友元
友元—可用于访问类中的私有的在使用类时,主要特点之一是实现数据的隐藏,即类的私有成员无法在类的外部(作用域之外)访问,但是,有时候需要在类的外部访问类的私有成员。解决方法是使用友元函数,友元函数是一种特权函数,c++允许这个特权函数访问类私有成员。只需要在类中进行声明友元。即,提供一种能够由其他地方(要访问类的外面)访问类私有成员的方式 ----友元。friend关键字只出现在声明处其他类、类成员函数、全局函数都可声明为友元(友元类、友元成员函数、友元函数):声明友元只需要在要声明的内容前加frien原创 2020-06-02 17:02:58 · 317 阅读 · 0 评论 -
6.2、面向对象
对象1、在自然世界和社会生活中,一个复杂的事物总是由许多部分组成的。任何一个事物都可以看成一个对象。2、任何一个对象都应当具有这两个要素,即属性(attribute)和行为(behavior),它能根据外界给的信息进行相应的操作。3、一个对象往往是由一组属性和一组行为构成的。抽象抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。类class 类名 空类占 1 个字节概率1、现实世界的事物所具有的共性就是每个事物都具有自身的属性,一些自身具有的行为,所以如原创 2020-06-02 16:58:42 · 268 阅读 · 0 评论 -
6.1、C++及与C的区别
C++简介C++的发展起源------略过;简单来说当时需要一种面向对象来替换面向过程,但是由于当时c非常盛行,所以设计一门语言来兼容c同时实现面向对象的特点。所以c++中能够完全运行c的内容,包含了c的语言。1、c++是对C的扩展,c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序时可以使用c语言的库2、c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++继承了c语言高效,简洁,快速和可移植的传统3、c++语言是在C语言的基础上,添加了面向对象、模板等原创 2020-06-02 16:47:12 · 441 阅读 · 0 评论