概述
笔者为计科大一菜鸡,此文章的初衷只是为了督促自己做点笔记,内容仅供参考,请大家理性看待!
对象指针只能访问该类的公有数据成员和函数成员
区别:对象名访问对象成员使用“.”运算符,对象指针采用“->”
其格式为:对象指针名->数据成员名/ 对象指针名->成员函数名(参数表)
使用对象指针有两个好处:1.实现信息的双向传递(通过在函数调用时将实参对象的地址传递给形参指针对象,使形参指针对象和实参指针对象指向同一内存地址,那么对象指针所指向对象的改变也同样影响这实参对象) 2.减小时空开支,提高运行效率,(实际上给函数传参数更好的做法是传引用 )
时间加法程序部分代码引用(上图)
this指针:this指针是一个系统预定义的特殊指针,指向当前对象,表示当前对象的地址
上图中语句1、2、3是等效的
(为了与类的数据成员H,M,S区别,将SetTime的形参名设为h,m,s)
(但如果使用This指针,就可以用它来区分本对象的数据成员与其他变量)
注意:this指针不是调用对象的名称,而是指向调用对象的指针的名称
对象引用就是对某类对象定义一个引用,其实质是通过将被引用对象的地址赋给引用对象,使二者指向同一内存空间,这样引用对象就成为了被引用对象的“别名”。
定义一个对象引用,并同时指向一个对象的格式为:
类名 & 对象引用名=被引用对象;
注意:被引用对象与对象引用必须是同类型;除非作为函数参数与函数返回值,否则都要在定义对象引用时对其初始化;定义一个对象引用不分配任何内存空间
对象引用的使用格式:对象引用名 . 数据成员名/对象引用名 . 成员函数名(参数表)
上图为通过对象引用使用对象的成员
/*本文中所用到的时间加法程序代码如下*/
(为了防止,被引用后的实参在函数内部被改变,一般会在定义对象引用时加上”const“,当然,如果你希望在函数中改变它,则不用加)
#include <iostream>
using namespace std;
class Clock
{
private:
int H M S;
public:
void SetTime(int h,int m,int s,)
{
H=(h>=0&&h<24)?h:0;
M=(m>=0&&m<60)?m:0;
S=(s>=0&&s<60)?s:0;
}
void ShowTime()
{
cout<<H<<":"<<M<<":"<<S<<endl;
}
void TimeAdd(const Clock & Cr)
{
H=(Cr.H+H+(Cr.M+M+(Cr.S+S)/60)/60)%24;
M=(Cr.M+M+(Cr.S+S)/60)%60;
S=(Cr.S+S)%60;
}
};
int main(void)
{
Clock MyClock1,MyClock2;
MyClock1.SetTime(8,30,30);
MyClock2.SetTime(0,0,30);
MyClock1.TimeAdd(MyClock);
MyClock2.ShowTime();
}
对象数组是以对象为元素的数组,与结构体数组类似
对象数组的定义格式为:类名 对象数组名[常量表达式n],...,[常量表达式2][常量表达式1];
对象数组元素的存取格式为:
对象数组名[下标表达式1][下标表达式2]...[下标表达式m].数据成员名//对象数组名[下标表达式1][下标表达式2]...[下标表达式m].成员函数名(参数表)
对象数组引用例子:计算一个班学生的总成绩。
首先设计一个类Score,这个类的数据成员为学号、数学成绩、程设成绩,成员函数有求总成绩、显示成绩。然后,定义一个对象数组存储成绩。最后注意调用成员函数求每个学生的总评成绩(其代码如下:)
#include <iostream>
using namespace std;
class Score
{
private:
int No,math,language,
total;
public:
void SetScore(int no,int m,int l);
void Count();
void ShowScore();
};
void Score::Count()
{
total=math+language;
}
void Score::ShowScore()
{
cout<<No<<" "<<total<<endl;
}
void Score::SetScore(int no,int m,int l)
{
No=no;math=m;language=l;
}
int main()
{
Score ClassScore[3];
int num,ms,ls;
for(int i=0; i<3; i++)
{
cin>>num>>ms>>ls;
ClassScore[i].SetScore(num,ms,ls);
ClassScore[i].Count();
}
cout<<"The Score are:"<<endl;
for(int i=0; i<3; i++)
{
ClassScore[i].ShowScore();
}
return 0;
}
其一组数据的运行结果为:
输入:
2022001 80 79
2022002 90 85
2022003 70 55
输出:
The Score are:
2022001 159
2022002 175
2022003 125
动态对象 指编程者随时动态建立并可随时消失的对象
建立动态对象采用动态申请内存的语句new,删除动态对象使用delete,动态对象存储从堆申请空间
建立/删除一个动态对象的格式为:
对象指针=new 类名;/delete 对象指针;
(上图为例子,完整程序在上面),注意delete删除的是指针所指的对象。
建立/删除一个动态对象数组的格式为:
对象指针 = new 类名[数组大小]; / delete [] 对象指针;
普通对象数组改用动态对象数组的示例
Score ClassScore[3];——>Score *ClassScore;ClassScore=new Score[3];
最后
以上就是鳗鱼百合为你收集整理的c++学习笔记...对象的使用的全部内容,希望文章能够帮你解决c++学习笔记...对象的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复