一、引用和指针的定义
引用:它是给另一个变量取一个别名,不会再次分配空间(可以带来程序的优化)
指针:它是一个实体,需要分配空间
引用在定义的时候必须进行初始化,并且空间不能够改变。
指针在定义的时候不一定要初始化,并且指向的空间可变。(注:引用的值不能为NULL)---------->可以带来程序的安全性
引用访问一个变量是直接访问,而指针访问一个变量是间接访问
二、C++初始化函数6个默认函数
1.构造函数
2.析构函数
3.拷贝构造函数(当函数参数为对象时候) ------->浅拷贝 深拷贝
Text t1;
Text t2(t1)
Text t2 = t1;
4.赋值函数 ----------->浅赋值 深赋值
Text t1;
Text t2;
t2 = t1;
5.Text a;
Text *b = &a;
Text* operator&(){ return this};
6.const Text a (常对象);
const Text *b = &a;
const Text* operator(){return this};
三、深拷贝、浅拷贝
执行过程:调用一次构造函数,一次自定义拷贝构造函数,两次析构函数。两个对象的指针成员所指内存不同。
浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间
深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
Student::Student() { name = new char(20); cout << "Student " << endl; } Student::~Student() { cout << "~Student " << (int)name << endl; delete name; name = NULL; } Student::Student(const Student &s) { name = new char(20); memcpy(name, s.name, strlen(s.name)); cout << "copy Student " << endl; }
int main()
{
Student A ;
Student B = A;(如果里面没有多余的拷贝出一份内存就是浅拷贝,如果有就是深拷贝)
return 0;
}