2018-04-02 20:15:53
1873
0
0
[TOC]
#ARM汇编分类
* ARM标准汇编
适用于ARM公司的汇编器,适合在Windows平台下使用,如ADS中使用
* GNU汇编
适用于GNU交叉编译工具链中的汇编器,适合于Linux平台下使用
#ARM汇编程序框架
.section .data ; 这里.section常常省略
<初始化数据>
.section .bss
2017-10-23 14:03:40
225
0
0
#继承
##继承中构造和析构的调用顺序
`构建子类对象`一定会`先调用父类的构造函数`
子类`默认调用父类的无参构造`,也可以`指定调用父类的构造函数`
指定调用的方法是通过`初始化列表指定`
`析构函数`的调用顺序`和构造函数调用相反`
#include
using namespace std;
class A
{
int x;
2017-03-02 21:32:48
145
0
0
#IO流
##标准输入输出对象
cout 有缓冲 可以直接重定向
cerr 无缓冲 不能直接重定向
clog 和编译器有关 不能直接重定向
cin
##UC那点东西
system(const char* cmd); // 可以执行终端中的指令
0 标准输入
1 标准输出
2 标准错误
> find / -name a.txt 2
2017-02-25 23:20:17
89
0
0
#异常 exception
##异常的作用
异常就是一种错误的表达形式
C语言中是通过返回值代表错误
##C++中的默认异常错误处理
调用terminate函数`终止进程`
#inlcude
using namespace std;
void foo()
{
/* 抛出异常123*/
throw 123;
}
2017-02-23 22:24:51
127
0
0
#简化指针
使用typedif简化函数指针
> typedef void (*sighander_t)(int); // 函数指针重命名
##操作指针调用虚表中的函数
#include
using namesapce std;
class Animal
{
public:
virtual void run()
2017-02-21 22:33:01
382
0
0
#多态
##概念
当`父类型的指针或引用指向子类对象`时,通过父类型的指针或引用调用`虚函数`,如果`子类重写了这个虚函数`,则调用的`表现是子类`的,`否则是父类的`.
* `继承`是构成多态的`基础`
* `虚函数`是构成多态的`关键`
* `函数重写`是多态的必备`条件`
##举例
#include
using namespace std;
c
2017-02-19 17:03:20
79
0
0
#多继承
##概念
一个类可以有多个直接父类
##语法
> class Iphone:public Phone,public Camera,public Mp3
{
}
父类`构造函数的调用顺序和继承顺序一致`,与其他无关
##多继承引入的冲突问题
假如继承的3个父类都有一个函数叫getPrice(),子类在调用该函数时,会产生歧异,不知调用哪个getPrice().
该问题的解决方案有
2017-02-16 20:47:48
159
0
0
#string类型的使用
##构造函数
string()
string(const char* str)
##拷贝构造函数
string(const string* s)
##析构函数
~string()
##重载的运算符
operator ==
operator !=
operator =
operator >
operator <
operator []
operator +
operator +=
operator <<
operator >>
... ...
##成员函数
append() //
2017-02-16 16:12:07
169
0
0
#单目运算符重载
!(取反) ~(按位取反) -(负) ++(自增) --(自减号)
>`#0` 默认操作符在前 操作数在后
先去0对象对应的类型中找一个成员函数叫`operator#()i`
如果找不到就去全局找一个全局函数`operator#(0)`
`0#` 默认操作符在前 操作数在后(`典型后减减和后加加`)
先去0对象对应的类型中找一个成员函数叫`operator#(int)`
2017-02-11 22:42:01
40
0
0
#成员指针
##成员变量指针
###1. 概念
指向成员变量的指针
###2. 语法
> 成员变量类型 类名::*指针名;
class A
{
public:
int x;
int y;
int z;
};
/* 语法*/
int A::*pm;
/* 如何赋值
2017-02-11 14:05:30
137
0
0
#拷贝构造函数
**1. 概念**
以复制的形式来构建对象
(使用一个已经存在的对象以复制的形式创建另外一个不存在的对象)
拷贝构造函数原型:
class A
{
public:
A(const A& a)
{
}
};
**2. 拷贝构造调用时机**
以一个存在的对象去创建另外一个不存在的对象的时候
* 把一个对象传入一个`非引用类型的值i`
2017-02-07 21:08:07
157
0
0
**引用类型的成员---不要返回局部变量的引用**
#include
using namespace std;
class A
{
int& x;
public:
/* 赋予了局部变量的引用*/
A(int x = 0):x(x)
{
}
int& getX()
{
return x;
2017-02-06 19:59:47
80
0
0
# 一. C++的发展历史
83年 本贾尼 正式命名成c++
87年 GNU 制定了C++标准
92年 微软\IBM 支持
98年 ansi/ISO 制定了C++标准 C++98
03年 ISO 制定了C++03
11年 ISO 制定了C++11(C++0x)
g++ ***.cpp -std=c++0x
# 二. C+
2017-02-06 19:59:43
105
0
0
#函数重载
**1.概念**
在`同一作用域`中`函数名相同参数列表不同`的函数构成重载关系,注意返回值不包含于参数列表
参数列表不同:
* 参数个数
* 参数类型
* 参数顺序
**2.例子代码**
#include
using namespace std;
/* 以下三个函数可以构成重载关系*/
int getm
2017-02-06 19:59:38
70
0
0
#C++中的类型转换运算符
**1. 静态转换**
在某一个方向上可以做自动类型转换(隐式类型转换)
`int * -------> void * // 可以转换`
`int * -------> int // 编译器报错`
> static_cast<类型>(变量)
例子代码
#include
using namespace std;
void getDa
2017-02-06 19:59:32
246
0
0
# 构造函数
**1. 概念**
和类名相同的一个特殊函数,并且没有返回值类型.
构建对象时会自动调用一次
`目的是为了完成对象的初始化工作`
**2. 例子代码**
#include
#include
using namespace std;
class Car
{
public:
/* 特征*/