医学网站建设方案,网站转化率低,wordpress 代码 翻译,绵阳网站seo#x1f436;博主主页#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️#x1f525;专栏系列#xff1a;线性代数#xff0c;C初学者入门训练#xff0c;题解C#xff0c;C的使用文章 #x1f525;座右铭#xff1a;“不要等到什么都没有了#xff0c;才下定决心去做” #x1… 博主主页ᰔᩚ. 一怀明月ꦿ ❤️专栏系列线性代数C初学者入门训练题解CC的使用文章 座右铭“不要等到什么都没有了才下定决心去做” 大家觉不错的话就恳求大家点点关注点点小爱心指点指点 目录
析构函数
析构函数的定义
析构函数的应用
对象数组
指向对象的指针
对象指针的概念
定义对象指针:
指向对象的数据成员的指针
指向对象的成员函数的指针 析构函数 析构函数的定义 析构函数的函数名是固定的由波浪线~后跟类名构成。析构函数没有返回值也不接受参数。由于析构函数不接受参数因此析构函数无法重载。一个类可以有多个构造函数有且仅有一个析构函数。当一个类未定义自己的析构函数时编译器会为他自动生成一个合成的析构函数。合成的析构函数函数体为空。 在一个析构函数中首先执行函数体然后析构成员成员被初始化顺序的逆序析构先构造后析构后构造线析构。 析构函数的作用并不是删除对象而是在撤销对象占用的内存之前完成一些清理工作。使这部分内存可以被程序分配给新对象使用。程序设计者要设计好析构函数以完成所需的功能只要对象的生命周期结束程序就会自动执行析构函数来完成这些工作。 析构函数的应用 无论何时一个对象被销毁都会自动调用其析构函数 1对象再离开其作用域时被销毁 2当一个对象被销毁时其成员函数被销毁。 3对于动态分配的对象当对指向它的指针应用delete运算符时被销毁 4对于临时对象当创建它的完整表达式结束时被销毁 注意当指向对象的引用或指针离开作用域时析构函数不会执行 class student
{
public:student(){sno200;snamezhagsan;}student(int a,string b){snoa;snameb;};~student();//析构函数的声明(记住析构函数没有返回类型参数列表为空)void setStudent();void showStudent();int Add();private:int sno;string sname;};
void student::setStudent()
{cout请输入学号和姓名endl;cinsnosname;
}
void student::showStudent()
{coutsno sname endl;
}
int student::Add()
{return sno;
}
student::~student()//析构函数的定义类外定义函数一定加类名
{cout很好\n;
} 对象数组 所谓对象数组指每一个数组元素都是对象的数组即若一个类有若干个对象我们把这一系列的对象用一个数组来存放。对象数组的元素是对象不仅具有数据成员而且还有函数成员。 声明一个一维数组的格式如下 类名 数组名[常量表达式] 与基本数据类型的数组一样在使用对象数组时也只能访问单个数组元素其一般形式为 数组名[下标表达式].成员名 在建立数组时需要对数组进行初始化。对象数组的初始化过程实际上就是调用构造函数对每一个元素对象进行初始化的过程。 注当一个数组中的元素被删除时系统也会调用析构函数创建多少个对象就会调用多少次构造函数 #includeiostream
using namespace std;
class student
{
public:void setstudent();void showstudent();
private:char id;string name;
};
void student::setstudent()
{cout请输入学号和姓名endl;cinidname;
}
void student::showstudent()
{cout学号和姓名分别为endl;coutidnameendl;
}
int main()
{student s[3];//创建有三个对象的对象数组for(int i0;i3;i){s[i].setstudent();}for(int i0;i3;i){s[i].showstudent();}
}指向对象的指针 对象指针的概念 指针指向的是内存中对象所占用空间对象在内存中的首地址称为对象的指针用来保存对象的地址的指针变量称为指向对象的指针变量简称指向对象的指针 定义对象指针: 类名* 指针名 注意对象指针访问其公共成员是使用-,对象名访问公共成员时是使用. student s1;
student* ps1
p1-Add; 指向对象的数据成员的指针 数据类型名* 指针名; 指针对象名.数据成员名 注意这里的数据成员一定要是公共的 student s2;
int* p2;
p2s2.flag;指向对象的成员函数的指针 指向对象的普通函数的指针: 返回类型 (*指针名)(参数列表) 指针名函数名或者指针名函数名 (*指针名)(参数列表); void Add()
{coutabendl;
}void (*p3)();
p3Add;//(1)
P3Add;//(2)
(1)(2)都是一样的因为函数名就是函数的首地址函数名前加不影响 指向对象的成员函数的指针 返回类型 (类名::*指针名)(参数列表) 指针名对象名.成员函数名 指向对象成员函数的指针调用对象的成员函数 (对象名.指针名)(参数列表) student s4;
void (student::*p4)();
p4student::Add;
(s4.*p4)(); 创建一个两数之和的类 #includeiostream
using namespace std;
class student
{
public:student(){a1;b1;}student(int x,int y){ax;by;};void Add();int flag1;
private:int a;int b;};
void student::Add()
{coutabendl;
}
//普通函数
void Add(int x,int y)
{coutxyendl;
}
int main()
{//对象指针student s1(1,6);student* p1s1;p1-Add();//对象数据成员指针student s2(1,6);int *p2;p2s2.flag;//普通函数指指针void (*p3)(int,int);p3Add;//普通函数指针调用函数(*p3)(3,5);//成员函数指针student s4{1,3};void (student::*p4)();p4student::Add;//成员函数指针调用函数(s4.*p4)();
} 如果大家还有不懂或者建议都可以发在评论区我们共同探讨共同学习共同进步。谢谢大家