字符串字面值是一串常量字符(是一个常量),字符串字面值常量用双引号括起来的零个或多个字符表示,为兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。字符串字面值的类型就是 const char 类型的数组。标准库函数 strlen 用于计算 C 风格字符串中的字符个数, 不包括 null 结束符。
C++风格字符串:string
那么string a1=“hello”//这个就是string string a2=a1+"world"//其中a1 是string “world”是字符串字面值
C风格字符串:字符串字面值的类型实质是const char类型的数组。C++从C语言继承下来的一种通用结构是C风格字符串,而字符串字面值就是该类型的实例。
2 关于size_type
标准库类型将size_type定义为unsigned类型
3指针的两种定义方式
4指针赋值和引用赋值的区别
(ps:引用的初始化是一次性的)
int *const curErr = &errNumb; // curErr is a constant pointer
5 符号的结合性
6 多用前置的++
只有在必要时才使用后置操作符(i++),因为这种情况需要先保留原值。
由于后自增操作的优先级高于解引用操作,因此 *iter++ 等效于 *(iter++)。子表达式 iter++ 使 iter 加 1,然后返回 iter 原值的副本作为
7点操作符和箭头操作符
8 new创建
1. new() 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;
. U* t, v# ~% u
2. new[] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量;
9 三种内存管理容易出现的毛病
10 类型转换
dynamic_cast :支持运行时识别指针或引用所指向的对象
const_cast :将转换掉表达式的 const 性质
static_cast: 编译器隐式执行的任何类型转换都可以由 static_cast 显式完成
reinterpret_cast: 通常为操作数的位模式提供较低层次的重新解释
11 if_else 匹配
12 异常处理
13 const
const对象,指向const对象的指针或者引用只能用于调用其const成员函数,如果尝试用它们来调用非const成员函数,则是错误的。
如果使用引用形参的唯一目的就是避免复制实参,则应将形参定义为const引用
不需要修改的引用参数定义为const引用,普通的非const引用形参在使用时不太灵活,这样的形参既不能使用const对象初始化,也不能用字面值或者产生右值的表达式初始化。
14 关于数组作为参数
15 STL
_______________________________________________________________无聊的
分割
面向对象
1 类作用域中名字的查找
函数内——函数外类内部——类外函数定义之前
2构造函数中的初始化式
>>>构造函数初始化式只在构造函数中定义而不是声明中指定
构造函数分两个阶段执行
first: 初始化阶段,指的是“()”初始化列表中初始化
second: 计算阶段,“{ }”,有构造函数体中的所有语句组成
在第二种方式中,是先隐式的使用默认的构造函数来初始化,最后在{}中覆盖····
必须对任何const或者引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式
3 static ;const; const static三种成员的初始化
class Test
{
public:
Test():a(0){}
enum {size1=100,size2=200};
private:
const int a;//只能在构造函数初始化列表中初始化
static int b;//在类的实现文件中定义并初始化
const static int c;//与 static const int c;相同。
}; int Test::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。
cosnt int Test::c=0;//注意:给静态成员变量赋值时,不需要加static修饰符。但要加cosnt
PS:static函数成员没有this指针,它属于类,不属于这个类的对象
4 explicit关键字
用来防止隐式类型转化