重载=符号 是this!=&s,不是this!=s,要记得加取地址符
想清楚是while(temp)还是while(!temp)
new的左边必须有个next,否则这个new出来的内存空间不会和原本链表头相连!!
除非是链表头!!!
链表的节点不只是要delete 还要=null!!!!而且是要->next=NULL!
引用
1.定义的同时初始化
2.引用对象从一而终
3.作为函数返回值时不能返回局部对象 一般与引用+形参搭配使用,返回形参
4.不能绑定在临时对象:
int *p1 = &(m + n);
int &r1 = m + n;
int &r4 = 50;
int &r5 = func_int();
bool isOdd(int &n)…isOdd(a + 9);
new的意义
为什么要给指针new内存,因为本身指针所存储的就是某一个数据类型的内存地址,如果一开始没有专门定一个int变量,又需要用到int *来操作int ,就需要new int,这个其实就省去了另外int 一个变量赋给int *
对象
1.static
static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。
static 成员变量必须在类声明的外部初始化!静态成员变量在初始化时不能再加 static
初始化时可以赋初值,也可以不赋值。如果不赋值,那么会被默认初始化为 0。
int Student::m_total = 0;
2.friend “she is my friend, she can use my pens” friend是单向的而不是双向的。
friend void show(Student *pstu);
friend void Student::show(Address *addr);
friend class Student;
friend函数不能直接调用类成员,要借助对象,也就是以对象做friend函数的形参
const
const+指针: const int* a //a不能修改 int* const a//指针不能修改
const+引用:编译器会为 const 引用创建临时变量 (是const引用不是const对象)
const int &r1 = m + n
b