极简C++(2) 类与对象

类与对象的基本概念

CLASS类将数据以及数据上的操作封装在一起
OBJECT对象是有具体类类型的变量
打个比方,类就像一个制作月饼的摸具,那么我们可以通过这个摸具来放入面粉和馅料编程一个月饼,那么摸具就是类,而各种各样的月饼便是对象

类的定义

类是对一群具有相同属性相同行为的对象的描述
我们来构造一个圆形的类:
在这里插入图片描述
构造类最重要的就是数据和操作,所以我们圆的类需要数据:半径,操作:计算周长函数和计算面积的函数;
在代码中,类的格式如下:

class 类名称
{
    
    
	privete:只允许类中访问
	public:公有成员,外部可访问
	protected:保护性成员,与继承相关
}
//eg:时钟类,有设置时间和时间展示两个操作
class clock
{
    
    
	privete:
	int hour,minute,second;
	public:
	void setTime(int newH,int newM,int newS);
	void showTime();
}

成员函数

上述的时钟类的函数,我们称之为成员函数,我们刚刚只进行了声明,但是还没有具体定义函数里的内容是什么;
下面的代码将会补充上,并且在主函数里创建对象以及使用对象的成员函数

//eg2-2:时钟类,有设置时间和时间展示两个操作
class clock
{
    
    
	privete:
	int hour,minute,second;
	public:
	void setTime(int newH,int newM,int newS);
	void showTime();
}
void clock::setTime(int newH,int newM,int newS){
    
    
	hour = newH;
	minute = newM;
	second = newS;
}
void clock::showTime(){
    
    
	cout<<hour<<":"<<minute<<":"<<second<<endl
}
int main(){
    
    
	clock myClock; //定义对象
	myClock.setTime(20,39,20);
	myClock.showTime();
	return 0;
}

构造函数

构造函数是一个特殊的成员函数,主要用在对象的初始化
在这里插入图片描述

//eg2-3:时钟类,重点注意与构造函数
class clock
{
    
    
	privete:
	int hour,minute,second;
	public:
	clock(int newH,int newM,int newS);//声明构造函数
	void setTime(int newH,int newM,int newS);
	void showTime();
}
//构造函数推荐写法
clock::clock(int newH,int newM,int newS){
    
    
	hour = newH;
	minute = newM;
	second = newS;
}
//c++成员列表实现方法,更加简洁
//clock::clock(int newH,int newM,int newS):hour(newH),minute(newM),second(newS);{}
void clock::setTime(int newH,int newM,int newS){
    
    
	hour = newH;
	minute = newM;
	second = newS;
}
void clock::showTime(){
    
    
	cout<<hour<<":"<<minute<<":"<<second<<endl
}
int main(){
    
    
	clock c(0,0,0); //定义对象
	c.showTime();
	return 0;
}

在这里插入图片描述

析构函数

析构函数与构造函数的恰好相反,它对对象撤销的时候起到了清理的作用
例如在建立对象的时候调用了new开辟了一片内存空间,析构函数就是调用delete释放内存
在这里插入图片描述

//eg2-4
#include <iostream>
using namespace std;
class Democlass{
    
    
	public:
		Democlass(int i);
		~Democlass();
}
Democlass::Democlass(int i){
    
    
	cout<<"Initial value is"<<i<<endl;
}
Democlass::~Democlass(){
    
    
	cout<<"destructor"<<endl;
}
void main(){
    
    
	Democlass obj(30);
	cout<<"This is the end main()"<<endl;
	return;
}
运行结果:
Initial value is 30
This is the end main()
destructor

构造函数重载

eg2-2:没有定义构造函数,为啥程序能够运行?
见构造函数特点第五点,会自动生成无参构造函数;
eg2-3: 这个例子用clock c;语句创建clock对象是否成功?
不能,如果有构造函数,不会自动生成无参构造函数,需要我们自己定义;
通过函数重载来实现;
在这里插入图片描述

//eg2-3:时钟类,重点注意与构造函数
class clock
{
    
    
	privete:
	int hour,minute,second;
	public:
	clock(int newH,int newM,int newS);//声明构造函数
	void setTime(int newH,int newM,int newS);
	void showTime();
}
//无参构造函数
clock::clock(int newH,int newM,int newS):hour(1),minute(1),second(1);{
    
    }
//构造函数
clock::clock(int newH,int newM,int newS){
    
    
	hour = newH;
	minute = newM;
	second = newS;
}
void clock::setTime(int newH,int newM,int newS){
    
    
	hour = newH;
	minute = newM;
	second = newS;
}
void clock::showTime(){
    
    
	cout<<hour<<":"<<minute<<":"<<second<<endl
}
int main(){
    
    
	clock myclock1;
	myclock1.showTime();
	clock myclock2(8,3,30); //定义对象
	c.showTime();
	return 0;
}

在这里插入图片描述

默认构造函数

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45636780/article/details/133620037
今日推荐