cpp中typedef定义数据类型别名(为一个已有的类型定义一个新名字)。
atof()将ASCII字符串转为相应的单精度浮点数。
atoi()将ASCII字符串转为整型。
变量的作用域:
- 在一个函数内部定义的变量,称为局部变量。
- 在一个函数的参数定义的变量,称为形式参数。
- 在所有函数外面定义的变量称为全局变量。
定义常量:#define;const关键字;
typedef修饰的变量是指针常量,指针p是一个常量,指针的指向不可以修改,但是指针指向的常量可以修改。
#define修饰的常量p指向的内容不可以更改,但是指针的指向可以更改。
整型常量可以是八进制、十进制、十六进制;后缀是U或者L表示无符号整数,L表示长整型;可以是大写也可以是小写。
基本数据类型有七种:bool,int,char,wchar_t,float,double,void;
数据类型修饰符:signed,unsigned,long,short
signed,unsigned,long,short可以修饰整型;signed和unsigned可以修饰字符型;long可以修饰双精度。
存储类:
- auto声明函数时函数返回值的占位符。
- register存储类定义在存储器而不是RAM中的局部变量,变量的最大大小等于寄存器的大小,对他不能应用一元的“&”运算符,因为他没有内存位置。寄存器只用于快存快取的数据,比如计数器;定义register并不是意味着这个变量一定在寄存器中存储,而是可能在寄存器中存储。
- static存储类意味着在程序的生命周期内保持局部变量的存在。用static修饰的局部变量可以在函数调用之间保持局部变量的值;修饰全局变量的时候会限制它的作用域在声明它的文件内;当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。
- extern用于提供一个全局变量的引用,全局变量对所有程序文件都是可见的。当使用extern时,如果这个变量无法初始化的时候,会把变量指向之前定义过的存储位置。extern常用于有两个或者多个类共享相同全局变量或者函数的时候。
- mutable 仅适用于类的对象,允许对象的成员代替常量。
- thread_local 可以与extern和static合并,声明的变量仅可在其上创建的线程上使用,在创建线程时创建,在线程销毁时销毁。每个线程都有自己的变量副本。
dynamic_cast实现类型转换(基类指针或者引用转换为继承类指针),用于父类和子类之间,但是容易产生错误,用在虚函数之间就不会,虚函数是实现多态的机制。虚函数是通过一张虚函数表来实现的,这张表主要是一个类的虚函数的地址表,解决了继承覆盖的问题。子类到父类使用,父类到子类则会产生错误。dynamic_cast应用的范围比一般的强转范围要更小一些,只能用于指针或引用的强转。
dynamic_cast<type_id>(expression) 把expression强转为type_id类型的对象。
->是一个运算符,左边是一个类对象的指针,右边是一个类的成员变量或者成员函数,类对象的指针用->来访问类的成员变量或者成员函数;类对象用 . 来访问类的成员变量或者成员函数。