标签:
变量
内置类型
double dval=3.14; const int &ri=dval;
编译器会默认将其转换为:
int temp=dval; const int &ri=temp;
若ri为非const,则修改ri只是改变了temp,而为改变dval。所以仅允许const引用绑定到需要临时使用的值是完全必要的。头文件中可以定义类,值在编译时就可以知道的const对象和inline函数。当const对象是由常量表达式初始化时,要放在头文件中;相反,要放在源文件中,并在其它文件中添加extern。
标准库类型
数组和指针
typedef String *pstring; const pstring cstr;==String * const pstring;
因为const形容的是cstr,所以要放在它们中间。
表达式
函数
void func(int (&arr)[10]);
传递多维数组方法:
void func(int (arr*)[10]); //或者 void func(int arr[][10]);
如果一个函数的形参具有默认实参,那么,它后面所有的形参都必须具有默认实参。要给一个带默认实参的形参提供实参,那么也必须给它前面的带默认实参的形参提供实参。在一个文件中,只能为一个形参指定默认实参一次,一般在声明中指定默认实参。若在定义中的形参表中指定默认实参,那么只有在包含该函数定义的源文件中调用该函数是,默认实参才有效,所以说,默认实参一般要定义在头文件中。
//①表示cmpFcn是一种指向函数的指针类型名字。 Typedef bool (*cmpFcn)(const string&,const string&); //② 函数指针不存在类型转换。 //③ 调用函数指针的方法如: //函数声明为 bool lengthCompare(const String&,const String&); cmpFcn pf=lengthcompare; lengthCompare(“hi”,”bye”);//函数名直接调用 pf(“hi”,”bye”);//函数指针调用 (*pf) (“hi”,”bye”);//函数解引用调用 //④函数指针型的形参: void useBigger(bool(const String&,const String&)); void useBigger(bool(*)(const String&,const String&));
标准IO库
类
class Screen{ public: Typedef std::string::size_type index; Index get_cursor() const; private: Int cursor; }; Inline Screen::index Screen::get_cursor()const{ return cursor; }
一旦一个名字被用作类型名,该名字就不能被重复定义。构造函数不能声明为const,因为这完全没有意义,构造函数的性质就是要给数据成员进行赋值的。
class Sales_item{ public: sales_item(const std::string &book=””):isbn(book),unit(0),revenue(0.0){} void same_isbn(Sales_item si); }; //当使用对象调用 Sales_item item; Item.same_isbn(“123556”); //就会调用sales_item的单形参的构造函数实例化一个新对象,然后传给same_isbn做实参。从而实现隐式转换。若要避免隐式转换,就要在构造函数声明前加上expl//icit,explicit用于类内部的构造函数声明上,在类定义体外部不再重复。
class Bar{ public: private: static Bar men1;//ok Bar * men2;//ok Bar men3;//error };
复制控制
重载操作符
标签:
原文地址:http://www.cnblogs.com/shouce/p/5411050.html