第六讲 对象指针
定义
使用
操作指向的对象
void main()
{
CStudent student;
CStudent *t=&studetn;
pt->input("TOM",22,'M');
(*pt).input("JIM",19,'M');
}
pt 是指针变量,使用完成后会自动释放,不用析构函数来释放。
第七讲 内存的分配与释放
静态内存
栈内存
堆内存
堆内存分配方式是动态分配
int *p=new int; //new 是运算符
int *p=new int(10); //赋初值
int *p=new int[10];//分配一个整型的数组,有10个元素
//不可直接初始化,只能通过其他的语句
//不能动态的释放,只能手工的释放
delete p;//释放地址
delete []p;或者 delete [10]p;//释放数组
注意点
1,new与delete必须配对使用,不释放会发生内存泄漏的现象
2,new一个数组时,不要初始化
3,delete一个数组时,必须指明数组
4,一个指针变量没有指向一个指定的内存空间时,不能操作指针变量
第八讲 变量的引用
别名就是引用
引用的概念
一个变量的别名叫做引用,对引用的操作就是对变量的直接操作,这本身
不是变量名,也没有类型,定义时,也不分配空间
先有变量名,然后再有一个别名
定义格式
int m;
int &n=m;
& 代表别名 n是m的别名
int m=5;
int &n=m;
n=6;
cout<<m;
很明显输出为6,对引用的操作就是对引用的变量进行操作
注意点
&是标识作用,不是求地址
类型标示符是目标变量的类型
声明引用时,必须同时对其进行初始化
引用声明完毕后,相当于目标变量名有两个名称,原名和引用名,且不能
再作为其他变量的别名
引用本身不占存储单元,系统也不分配,
不能建立数组的引用,因为数组是一个集合
不能建立指向引用的指针,因为引用不是一种数据类型,所以没有引用引
用,没有引用的指针
主要功能
传递函数的参数
返回一个引用
引用必须有效
不能返回局部变量的引用
不能建立数组的引用
不能建立new对象的引用
不能建立引用的引用
第九讲 this指针
第十讲 this指针
特点
只能用在类的成员函数中,它指向调用这个函数的对象
区别形参和数据成员
返回对象本身
静态成员的函数没有this指针
void main()
{
CStudent stu1;
stu1.input(&stu1,"TOM",89);
stu1.output();
}
CStudent intput(CStudent *this,char *name,int score)
{
this->name=name;
this->score=score;
return(*this);
}
void output()
{
cout<<this->name<<" "<<this->score<<endl;
}
使用方式
显式
当形参和数据成员名字相同时
返回当前对象本身时
隐式
形参和数据成员名字不同时