1、非常量引用的初始值必须是左值
要理解这个先得理解左值和右值的概念一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。
那么举个例子先int i = 5;int &a = i;这时编译通过但是如果 int &a = 5;
这样就出错了这个5和i有什么区别,答案就是5是右值,i是左值。
2、引用用法:函数调用作为左值
如果函数做左值,那么必须返回引用。
可以理解成a=test02()
#include<iostream>
using namespace std;
#include<string>
//返回静态变量引用
int& test02() {
static int a = 20;
return a;
}
int main() {
//如果函数做左值,那么必须返回引用
int ref2 =test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
test02() = 1000;
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
system("pause");
return 0;
}
3、深拷贝与浅拷贝
6、拷贝构造函数以值方式返回局部对象时,返回的新的一个对象。
4、类的空对象占用一个字节。
5、类的成员属性命名:m_ 开头,m是member的意思。
6、空可以这么写:head==NULL head== nullptr !head 三种都可以。。
非空可以这么写:b b->next。
哑结点可以这么写:ListNode* dummy = nullptr;