0%

echo 输出的文字变换颜色或显示效果的时候,要使用参数 -e


格式

1
2
3
4
5
6
echo -e "\033[控制码m文字\033[0m"

ps:
控制码 -----> 可以有多个,以 ; 隔开('\033[控制码;控制码...m')
或者 '\033[控制码m\033[控制码m...' 多个连写也可
最后的 '\033[0m' -----> 恢复默认属性

其中 \033 是 ESC 键的八进制,\033[ 即告诉终端后面是设置颜色的参数,显示方式,前景色,背景色均是数字


阅读全文 »

定义

依赖倒置原则,英文缩写DIP,全称Dependence Inversion Principle。

原始定义:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions。

官方翻译:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。


阅读全文 »

之前编码时使用 ACE_DLL 打开 so 动态库时,一直失败,后来打印 error 信息查看失败原因是 undefined symbol,如下所示:

发现是相关 boost 库没有链接,修改相关 CMakeLists.txt 添加相关库链接,重新编译就OK了;
后来试了下自己编写的 so 库,使用库中的class以及其中的方法时,只加了相关的头文件,没有链接相关的 so ,但是可以open成功,运行时出错。

阅读全文 »

参考文章:C++ 11 Lambda表达式

C++11 引入了 Lambda 表达式。利用 Lambda 表达式,可以方便的定义和创建匿名函数

声明 lambda 表达式

lambda 表达式完整的声明格式和各项具体含义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
声明格式:
[capture list] (params list) mutable exception-> return type { function body }

其中除了 "[]" (其中捕获列表可以为空) 和 “复合语句” (相当于具名函数定义的函数体) ,其它都是可选的。
它的类型是单一的具有成员 operator() 的非联合的类类型,称为闭包类型 (closure type) 。

各项的具体含义:
capture list: 捕获外部变量列表
params list: 形参列表
mutable指示符:用来说用是否可以修改捕获的变量
exception: 异常设定
return type: 返回类型
function body:函数体

省略其中的某些成分来声明 “不完整” 的 lambda 表达式,常见的有以下几种:

1. [capture list] (params list) -> return type {function body}
2. [capture list] (params list) {function body}
3. [capture list] {function body}

阅读全文 »

C++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,explicit构造函数是用来防止隐式转换的。

隐式转换:

如果C++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。
如下面所示:

阅读全文 »

参考文章:C++虚函数表剖析
参考文章:C++虚函数表分析
参考文章:C++中基类的析构函数为什么要用virtual虚析构函数


C++ 中的多态是用虚函数实现的:子类覆盖(重写)父类的虚函数,然后声明一个指向子类对象的父类指针,如 Base* base = new Derived(); 当调用base->func(),调用的是子类的Derived::func()

1
2
3
4
5
6
7
8
9
10
11
class Base
{
public:
virtual void func();
};

class Derived : public Base
{
public:
void func();
};

这种机制使用了一种动态绑定的技术,技术核心是虚函数表(简称虚表)。


阅读全文 »

简介

Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件。它实现在局域网内共享文件和打印机,是一个客户机/服务器型协议。客户机通过SMB协议访问服务器上的共享文件系统。

阅读全文 »