c++ primer 21.4.28笔记

定义引用:int& a=i;这里的&可以大概等效于*const(知识面不全,只能用“大概”,不敢妄下断言,其实,我认为让我如此的原因是:书上说引用不是对象,但是指针常量显然是对象);

底层const(限制了指针变量所指对象的值)的限制:
当执行对象的拷贝操作时,拷入和拷出的对象必须具有相同的底层const资格,或者两个对象的数据类型必须能够转换。一般来说,非常量可以转化成常量,反之则不行。
这可比顶层const(限制指针变量)的限制多啊;

const int sz=get_size(); //sz不是常量表达式,因为:sz本身是常量,但是它的值要等到运行时才能得到;一般来说,你如果认为对象为常量表达式时,就声明它为constexpr;

头文件不应包含using声明(我最近经常这么干,我也不太懂书上写的原因,我写的程序比较简单,所以没出现类似错误)

触发getline函数返回的那个换行符实际上被丢弃了,得到的string并不包括该换行符;

string s1;(注意区别!!!)
while (cin >> s1){
     
	cout << s1<<endl;
}

while (getline(cin, s1)){
     
	cout << s1 << endl;
}

我说怎么经常用strlen(string)而不是string.size();因为string.size()的返回类型肯定不是int型,而是一种无符号类型(切勿混用无符号类型和带符号类型),但是可用auto和delctype;

如何更好地理解引用的初始化:
int& a=b; //a绑定到b身上了

Warning:因为某些历史原因,也为了与c兼容,所以c++语言中的字符串字面值并不是STL中string的对象,切记,字符串字面值与string是不同的类型。(噢噢噢噢噢噢~~~,原来如此)

一般来说,c++程序应该使用形如名为cname的头文件而不是name.h的形式。——P82 建议部分

你可能感兴趣的:(c++primer学习笔记,c++,编程语言)