德彪西浪漫圆舞曲:C++学习笔记-001

来源:百度文库 编辑:中财网 时间:2024/05/03 21:07:43
1、名字空间:
*定义:
namespace MyNameSpace {
 // code...
}
*使用:
别名(繁琐):namespace myStd = std; myStd::string str = "abc";
using指示符(污染名字空间):using namespace std; string str = "abc";
using声明(推荐使用):using std::string; string str = "abc"; 2、字符&字符串
char c = ‘a‘; // sizeof(c) == 1
wchar_t wc = L‘我‘; // 宽字符,sizeof(wc) == 2
string str = "我是中国人"; // str[0]str[1] == ‘我‘
"two" "some" //  == "twosome",相邻的字符串会被链接在一起 3、内置数据类型支持一种特殊的构造函数语法 int ival = int(); double dval = double(); 4、引用的所有操作都被应用到它所指的对象身上,包括取地址操作符 5、不允许非const引用指向需要临时对象的对象或值,如:
double dval = 1024;
const ing &ri = dval;
会被编译器转换成:
int temp = dval;
const int &ri = temp;
如果给ri赋一个新值,这样做不会改变dval,而是会改变temp,对用户来说,就好像修改动作没有生效。
6、char ca[4] = "test"; // 错误
char ca[5] = "test"; // 正确:包含一个额外的终止空字符
int ix, jx, kx;
int &iar[] = {ix, jx, kx}; // 错误:不允许引用数组 7、typedef char *cstring;
extern const cstring cstr;
// != const char *cstr(指向const字符的指针)
// == char *const cstr;(指向字符的const指针),const修饰cstr的类型(即char *) 8、sizeof操作符在编译时刻计算。sizeof计算数组长度、指针大小、对象大小等。
string str = "12345678"; // sizeof(str)==sizeof(string);
// sizeof("12345678")==9;
char *pc = "12345678"; // sizeof(pc)==4; strlen(pc)==8;
char ca[] = "test"; // sizeof(ca)==5; strlen(ca)==4;
char ca2[] = {‘t‘, ‘e‘, ‘s‘, ‘t‘}; // sizeof(ca2)==4; strlen(ca2)不确定,以为没有终止符; 9、delete之后要将指针置为NULL,避免误用。 10、表达式中有unsigned int时,int会被转换为unsigned int。 11、static_cast 普通强制转换
dynamic_cast
const_cast,转换掉表达式的常量性,以及volatile的volatile性
reinterpret_cast,任意转换,对操作数的位模式进行重新解释 12、当vector.size()==vector.capacity()时,会分配双倍于当前容量的存储区,把当前的值拷贝到新分配的内存中,并释放原来的内存。 13、数据类型越大越复杂,vector的效率越低,list则相反。
通过用指针存放vector中的复杂类对象可提高性能(指针只占4字节,且重修分配内存不会调用对象的构造/析构函数)。