asm:这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻
址访问,从而提高效率。登记册关键字指定变量是要在计算机中存储的注册
mutable:这个关键字只适用于非静态和非const数据类成员。如果一个
声明数据成员是可变的,那么它是合法的赋值从这个数据成员
aconst成员函数
volatile
说明变量在程序执行中可被隐含地改变,表明某个变量的值可能在外部被改变,优化器在用到这个变量时
必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
extern std::string name("exercise 3.5a")是定义.
const int &rval3 = 1;//合法
int &rval3 = 1;//非法
ispunct(ch)//判断是否是标点符号;
单粒模式:构造函数定义在保护成员里,public里定义static成员函数来构造初始化实例。一般私有成员里定义指向本类的指针。
//单粒模式例子start
class CSingleton
{
public:
static CSingleton *GetInstance()
{
cout << __FUNCTION__<<"111" << endl;
return &m_Instance;
}
void prin()
{
cout<<cstr<<endl;
}
protected:
private:
static CSingleton m_Instance;
char cstr;
// hide constructor
CSingleton()
{
cout << __FUNCTION__<<"222" << endl;
cstr='1';
}
};
CSingleton CSingleton::m_Instance;
//单粒模式例子end
函数参数的默认形参是从末尾开始算起,int fun(int x,int y,int z=0);
静态成员变量可以被成员函数访问,但静态成员函数只能访问静态成员变量
选择容器类型法则:
vector,deque------------程序要求随机访问元素。
list--------------------中间位置插入删除元素。
deque-------------------首尾插入删除元素。
map---------------------关联值和关键字,通过关键字访问到值,自动排序快速访问元素。
继承规则:
public继承:基类的public为派生类的public成员,protected也为派生类的protected成员.
protected继承:基类的public和protected为派生类的protected成员。
private继承:基类的所有成员都为派生类的private成员。
派生类只能初始化自己的直接基类,不能初始化间接基类。
纯虚函数----只为派生类提供可覆盖接口,用户不能创建该类的对象。
C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual
关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual
关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。有virtual则是覆盖。覆盖就是看不见,隐藏就是通过类名::函数名可以访问到
gcc/g++ -o test test.c
数组动态分配-----编译时不知道大小的数组,运行时才知道,int *p=new int[n],这个n可以是调用函数的返回值也可以是前面经过计算的结果。