嵌入式面向对象编程
Glaciersc.
这个作者很懒,什么都没留下…
展开
-
共享指针,弱指针
#include<iostream>#include<memory>using namespace std;class Child;class Parent;class A{ public: int m_num; A() { cout << "A" << endl; } A(int num) : m_num(num) { cout << "A int" << endl;原创 2020-06-01 00:04:27 · 598 阅读 · 0 评论 -
嵌入式面向对象程序开发·智能指针(未整理完)
一、智能指针智能指针分类 auto_ptr(C++98) 被C++11智能指针替代,不再使用 unique_ptr(C++11) 独占指针 shared_ptr(C++11) 共享指针weak_ptr(C++11 ) 弱指针需使用例如g++ -std=c++11 -o a.out shared_ptr.cpp 编译1、shared_ptr共享指针1、作用:多个指针可以同时指向同一个对象(共享所有权,协同工作),当最后一个指针被销毁...原创 2020-05-24 21:31:35 · 261 阅读 · 0 评论 -
嵌入式面向对象程序开发·C++模板
第十三课、C++模板概述 模板是一种参数化的多态工具。所谓参数化的多态性,是指将程序所处理的对象的类型参数化,使一段程序代码可以用于处理多不同类型的对象。采用模板编程,可以为各种逻辑功能相同而数据类型不同的程序提供一种代码共享的机制。一、函数模板1、函数模板:(1)一般说明形式:template <模板形参表>返回值类型函数名(模板函数形参表){//函数定义体}注:①函数模板的定义以关键字template开头 ②temp...原创 2020-05-18 00:10:13 · 240 阅读 · 0 评论 -
嵌入式面向对象程序开发·依赖倒置+运行时类型信息(RTTI)
第十一课、浅谈设计模式-依赖倒置1、C++中有一种设计原则叫依赖倒置。也是基于多态的。2、高层模块不应该依赖低层模块,二者都依赖其抽象;抽象不依赖细节;细节依赖抽象。3、依赖倒置的意义: (1)以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。 (2)依赖倒置原则可以降低类间的耦合性,提高系统稳定性,降低修改程序造成的风险。 (3)抽象类(c++中称为接口)。(例如类Absbook 中的virtual string getContent() = 0;) (...原创 2020-05-12 20:13:55 · 194 阅读 · 0 评论 -
嵌入式面向对象程序开发·C++多态
第十课、C++多态一、多态介绍1、定义:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。2、作用: (1)增加程序的灵活性;(2)减轻系统升级、维护、调试的工作量和复杂度;(3)提高代码的扩展性。3、分类:静多态(编译时绑定)、动多态(运行时绑定)。 注:函数重载,也是一种多态现象,通过命名倾轧在编译阶段决定,故称为静多态4、多态形成的条件(前提):(1)父类中有虚函数; (2)子类覆写父类中的虚函数;(3)通过已被子类对象赋值的父类指针...原创 2020-05-12 20:10:51 · 161 阅读 · 0 评论 -
嵌入式面向对象程序开发·C++继承
第九课、C++继承封装:提高代码维护性 (遇到问题能够准确定位)。继承:提高代码复用性(非ctrl+c ctrl+v,而是不做任何修改或操作源码就能实现代码的复用)。多态:提高代码扩展性。2、继承描述:(以下方示例2为例说明)(1)A类是B类的父类,B是A的子类。(2)A类是B类的基类,B类是A的派生类。(3)继承的过程可视为拷贝。3、继承语法声明: ...原创 2020-04-27 20:17:52 · 216 阅读 · 0 评论 -
嵌入式面向对象程序开发·运算符重载
一、友元机制1、概念定义:(友元函数、友元类) (1)友元是一种允许非类成员函数访问类的非公有成员的一种机制。 (2)可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。2、友元函数: (1)该函数不是类的一部分,但又需要频繁地访问类的数据成员。 (2)友元函数在类作用域外定义,但它需要在类体中进行说明。 (3)为与该类的成员函数区别,定义方式是...原创 2020-04-17 16:38:11 · 134 阅读 · 0 评论 -
嵌入式面向对象程序开发·深浅拷贝(补充)+移动构造函数
五、深拷贝与浅拷贝1、浅拷贝:对基本类型数据以及简单的对象直接复制内存的拷贝。但是,当类的成员包含指针的时候,使用浅拷贝是将拷贝对象的地址赋值给了新的对象,导致两个指针指向了同一块内存空间,这时候浅拷贝就不能满足实际要求了,需使用深拷贝。示例: Test (const Test &other) { m_id = ...原创 2020-04-04 11:48:16 · 144 阅读 · 0 评论 -
嵌入式面向对象程序开发·深拷贝与浅拷贝
五、深拷贝与浅拷贝1、浅拷贝:对基本类型数据以及简单的对象直接复制内存的拷贝。但是,当类的成员包含指针的时候,使用浅拷贝是将拷贝对象的地址赋值给了新的对象,导致两个指针指向了同一块内存空间,这时候浅拷贝就不能满足实际要求了,需使用深拷贝。示例:Test (const Test &other){ m_id = other.m_id; m.name =...原创 2020-03-27 21:23:58 · 213 阅读 · 0 评论 -
嵌入式面向对象编程·封装
一、封装1、封装作用:对外提供接口,屏蔽数据,对内开放数据。2、C语言的封装:当单一变量无法完成描述需求的时候,封装成函数或结构体类型解决。 问题:即知其接口,又可以直接访问其内部数据。 注:C语言中的封装内容不能是函数(C++中的class可实现),结果可以是函数。3、C++的封装:class 封装的本质,在于将数据和行为绑定在一起,再通过对象来完成操作。二、类与...原创 2020-03-22 21:16:35 · 969 阅读 · 0 评论 -
嵌入式面向对象编程·类型转换
一、static_casr<T>(expr)1、作用:相关数据类型之间的转换。(1)类似于C语言的强制转化,保证代码的安全性和正确性。(2)可用于①相关类型转换;例如整型、实型;②子类转父类;③ void *指针与其他类型指针之间的类型转换。(3)不允许指针之间类型的转换(特例:仅允许void*与其他指针之间的类型转换)。 如:char ch = ‘a’;...原创 2020-03-22 21:11:08 · 135 阅读 · 0 评论 -
嵌入式面向对象编程·vector类
1、头文件:#include<vector>2、作用:保存各类型的数据,可替换数组进行使用。3、使用:vector<数据类型 > 容器名称,定义一个容器。4、使用示例#include<iostream>#include<vector>#include<string>using namespace std;...原创 2020-03-15 19:24:03 · 276 阅读 · 0 评论 -
嵌入式面向对象编程·string类
一、string类的字符操作1、string定义:可变长的字符串2、string字符串初始化,示例:string s = “hello world”; sting s1(“hello world2”); string *ps = new string(“hello world3”); string s4 = “”; //空字符串3、string字符访问方式:使用[]或...原创 2020-03-15 19:22:06 · 400 阅读 · 0 评论 -
嵌入式面向对象编程·struct结构体升级
1、结构体作用:封装不同类型的数据,即将不同类型的数据整合在一起,用同一种数据类型表示。2、C语言 VS C++ C语言:(1)定义结构变量必须加上struct关键字。 (2)结构体只能存放变量,不能存放函数。 C++: (1)定义结构变量无须加上struct关键字。 (2)结构体能存...原创 2020-03-15 19:06:55 · 264 阅读 · 0 评论 -
嵌入式面向对象编程·C++对C的函数扩展
一、内联函数1、 inline是由编译决定,使用inline关键字只是申请编译器。2、 宏函数:(define)省去了自定义函数调用时所需对的形参及函数体里需要分配的空间;省去了函数调用、传参、函数返回、释放等过程(提高运行效率);利用编译时间换取内存空间。限制:频繁调用且功能简单的函数可使用宏函数。例: #define ADD(a,b) a+b3、 内联函数(inli...原创 2020-03-15 18:40:38 · 139 阅读 · 0 评论 -
嵌入式面向对象编程·C++对C的加强
一、实用性加强(接上篇)5、register关键字(与volatile联系起来)(C语言 VS C++)C语言:(1)作用:尽可能地将修饰的变量保存在cpu的内部寄存器中,省去了cpu到内存中抓取数据的时间,提高程序的运行效率。(2)修饰对象:频繁访问的变量。(不能修饰全局变量,也不能修饰函数,只能修饰局部变量)(3)格式: 如:register int num = 5 ...原创 2020-03-07 14:27:54 · 169 阅读 · 0 评论 -
嵌入式面向对象编程·C++对C的加强·实用性加强(未完)
1、for功能增强 //功能一 for(int i =0;i<3;i++) { cout << i << endl; } //功能二 int array[3] = {1,5,6}; for(int temp : array ) //freach { cout << te...原创 2020-02-29 23:37:39 · 177 阅读 · 0 评论 -
嵌入式面向对象编程·C++对C的加强·命名空间
1、命名空间作用:防止(变量名、函数名、类名)发生命名冲突。2、举例生活例子:当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或他们父母的名字等。计算机系统中的例子:一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。C++程序例子:一个.cpp文件中有两...原创 2020-02-29 23:27:34 · 153 阅读 · 0 评论 -
嵌入式面向对象编程·课堂笔记1·开篇
一、C++在嵌入式开发中的地位及应用领域(1)上层应用软件:c/c++/java/object.c/php、脚本语言:python(2)中间框架(运行库):solite3、网络线程库、opengl、opencv、tensorflow、caffer(框架)(3)系统:Linux、Android(C/汇编/脚本)、Linux内核(4)底层硬件:ARM人工智能芯片(fpga)-汇编/硬件...原创 2020-02-27 20:27:17 · 386 阅读 · 0 评论