1. 命名空间起别名:
namespace Television{…}
namespace TV Television;
2. 命名空间可以嵌套
namespace EMSD1701
{
string name;
namespace taiyuan
{
string name;
}
}
EMSD1701::taiyuan::name = “test”;
using namespace::taiyuan::name;
建议不用嵌套。
3.const与指针
常量指针 常量的指针 const int * p;
指针常量 指针是常量 int * const p
常量指针指向常量
const int * const p;
常对象只能调用常成员函数
常成员函数只能 读 成员变量
const_cast
用常量指针指向常对象
调用普通成员函数,修改普通成员变量
4.内联函数
在编译的时候拆开
做语法检查(与宏定义的不同)
inline关键字 , 无递归、循环…结构控制语句
写在头文件里也可以。声明和定义需放在一块。
g++ -E src/inline.cpp -o inline.e
g++ -S src/inline.cpp -o inline.s 执行完编译阶段就停。
g++ -O -S src/inline.cpp -o inline.s 优化
5.函数重载
顺序、个数、类型不同
但返回值不能作为重载条件
函数名不能作为函数的指针
函数名和形参列表作为 指针 _Z3aveidi _Z3aveii
//函数重载 overload
double ave(int a, int b){
return (a+b)/2;
}
double ave(double a, int b){
return (a+b)/2;
}
double ave(int a, double b, int c){
return (a+b+c)/2;
}
int main(){
int a,b;
double c = 1.5;
a=1;
b=2;
cout<
6.默认参数
声明和定义分开的时候,声明需要写,定义不需要写
从左到右,只要有一个参数有默认参数,它和它右边的都得有默认参数
要避免二义性
7.模板函数
模板函数和普通函数 的函数重载
8.布尔
0 : false
非0 : true 。二进制位只要有 1 的就是true《除去符号位》。
9.字符串
char*
10.操作符重载
11.new和delete
必须成对出现,否则会内存泄漏
12.引用
引用是一个变量的别名
& 出现在= 左面, 有可能是引用
声明的时候就需要初始化。
定义的时候就需要初始化。
引用不能重新赋值。
变量可以被多次引用。
//索引块不同,数据块相同