嵌入式学习笔记:第一周

这篇博客主要介绍了嵌入式Linux环境下C++的学习内容,包括C++的基础、面向对象特性、内存管理和异常处理等。此外,还提到了C++在嵌入式开发中的应用,如GUI、服务器开发和图像处理,并探讨了命名空间的概念及其使用。
摘要由CSDN通过智能技术生成

**

嵌入式面向对象编程(嵌入式Linux C+ +开发)

**
学习内容: C++ (C with class) == 95% (数据类型、基本控制语句、函数、关键字、位运算、指针、数组)
1.C到C+ +升级(语法升级)
2.C++面向对象的三三大特点(封装、继承、多态)
3.C++内存管理(智能指针,内存池)
4.C++异常处理
5.C++文件处理(IO操作)
6.C++模板
7.C++STL
(c++98 c++11 c++14 c++17 c++20){按顺序发展,讲解全部}

(服务器,GUI,图像处理)
1.GUI-Qt(视图,数据库,文件,网络)
2.服务器-60%(大并发)
3.图像处理(opencv)

C++在嵌入式开发中地位及应用领域最重要的俩个方面
(1)上层应用软件(c/c++/java/object c/php,脚本语言:Python)
(2)中间框架(运行库)(sqlite3,网络线程库。opengl.opencv,tensorfiow,caffer框架)

面向对象的设计思想
可以参考:https://blog.csdn.net/xp_zyl/article/details/59638426?utm_source=copy
编程思想:面向对象和面向过程
可以参考:https://www.cnblogs.com/BeiGuo-FengGuang/p/5935763.html

C语言:
优点: 1.直接访问硬件2.运行效率3.移植性
缺点: 1.代码复用性差2.代码维护性差3.代码的展性差

  编程-->代码质量(高内聚,低耦合) - (复用性(重用性)、维护性、扩展性)
  复用性:已开发好的代码可以在其他项目中直接使用; ! = ctrl+c   ctrl + v
  维护性:当程序出现问题,能够很快的查找出问题出现在哪一行代码;
  扩展性:当你添加新的功能时,不修改原来的代码,只添加新的代码;
   C++优点:良好复用性,良好维护性,良好扩展性

命名空间

#include
// 以下的代码都使用std命名空间,一旦打开无法关闭.不定义可以使用 std::cout
using namespace std;

// 定义一个匿名空间成员函数
void print (int money) {
// LINE 打印当前代码所在行数,用于分辨编译器指定了那个命名空间成员函数
cout << LINE << ": " << money << endl;
}

// 定义命名空间,类似结构体
namespace abc {

// 结构体内定义变量和函数
int balance = 0;
void save (int money) {
	balance += money;
}
void draw (int money) {
	balance -= money;
}
void print (int money) {
	cout << __LINE__ << ": "  << money << endl;
}
void show (void) {
	// 指定引用匿名空间成员  ::=y引用匿名空间成员
	::print (balance);
	
	// 引用当前命名空间内的成员函数
	// print (balance);
	//cout << balance << endl;
}

};
/*
// 并级,同名的命名空间会自动合并
namespace abc {
int balance = 0;
void save (int money) {
balance += money;
}
};
namespace abc {
void draw(int money) {
balance -= money;
}
};
/
namespace ccb {
int balance = 0;
void save (int money) {
balance += money;
}
// 这里只是声明函数体,函数体在下面一个命名空间内.只有函数体一样才可以这样定义函数
void draw (int money);
/

void draw(int money) {
balance -= money;
}
*/
void show (void) {
cout <<balance << endl;
}
};
void ccb::draw (int money) {
balance -= money;
}
// 嵌套的命名空间,逐级引用
namespace ns1 {
int x = 1;
namespace ns2 {
int x = 12;
namespace ns3 {
int x = 123;
namespace ns4 {
int x = 1234;
}
}
}
};
int main (void) {
// :: 作用域限定符
// 调用abc里面的svae函数
abc::save (5000);
// 调用abc里面的balance变量
cout << abc::balance << endl;
abc::draw (3000);
cout << abc::balance << endl;

// 调用ccb里面的save函数
ccb::save (8000);
// 调用ccb里面的balance变量
cout << ccb::balance << endl;
ccb::draw (2000);
cout << ccb::balance << endl;

// 名字空间指令 是将命名空间的所有名称设置可见,并将和ccb命名空间成员重载的其他成员都隐藏!
using namespace ccb;
show ();
using abc::show; // 名字空间声明 是将某个命名空间的某个名称引用到main
show ();
/*
// 编译报错:歧义错误
using namespace abc;
show ();
*/

// 变量的逐级解引用
cout << ns1::x << endl;
cout << ns1::ns2::x << endl;
cout << ns1::ns2::ns3::x << endl;
cout << ns1::ns2::ns3::ns4::x << endl;
using namespace ns1::ns2::ns3::ns4;
cout << x << endl;

// 名字空间别名
namespace ns_four = ns1::ns2::ns3::ns4;

// 使用命名空间别名解引用变量
cout << ns_four::x << endl;
return 0;

C++对C的增强
for语句:在这里插入图片描述
bool类型关键字:增加bool类型
在C中: 不存在bool类型,也不存在true和false关键字;
在C++中: 在C语言的基本类型系统之上增加了bool;C++中的bool可取的值只有true和false;理论上bool只占用一个字节,如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现。true代表真值,编译器内部用1来表示;false电表非真值,编译器内部用0表示;bool类型只有true(非0)和false(0)两个值,C++编译器会在赋值时将非0值转换为true,0值转换为false;
auto关键字:参考:https://www.cnblogs.com/KunLunSu/p/7861330.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值