C++类


前言

C++学习,类

一、类的表示

示例:一个钟表的类

class Clock{
	public:
	void setTime(int newT,int newM,int newS);
	void showTime();
	
	private:
	int hour,minute,second;
};

可以看到在C++中,一般默认将类名(Clock)首字母大写,且在一个类中含有public和private。其中public为公有成员,private为私有成员。一般的可以认为public中的成员函数为调用该类的一个接口,任何外部函数都可以通过调用public中的声明来得到相应private中的元素的各种情况。我认为比如说有一个类

class 不知道啥类{
	public:
	一个成员函数();
	private:
	element;
};
不知道啥类::一个成员函数(){
	return f(element)
}

不知道啥类.一个成员函数() 得到element 的一个映射

但是外部函数不能直接访问private中的值。

在一开始提到的Clock类中,可以进一步完善

#include<iostream>;
class Clock{
	public:
	void setTime(int newT = 0,int newM = 0,int newS = 0);//可以在类中直接进行实例化,避免代码运行
	//忘记实例化产生错误
	//当然也可以在main函数中进行实例化
	void showTime();
	private:
	int hour,minute,second;//只能内部函数访问
};

void Clock::setTime(int newT ,int newM ,int newS){
	hour = newT;
	minute = newM;
	second = newS;
	
}//写成员函数和一般函数要求差不多,括号内都是参数{不要带上实例化时的数字!}

void Clock::showTime(){
	cout<<hour<<':'<<minute<<':'<<second<<endl;
}

int main(){
	Clock myClock;//和一切数据类型一样,class新给定一个数据类型,作为它的变量就要进行
	//变量声明
	myClock.setTime(1,2,3);//因为在类中已经有了实例化,可以重新赋予初始值或直接跳过;
	myClock.showTime();
	return 0;
}

二、类的特殊函数

1.构造函数

简单来说就是:构造函数的创造使类进行一波初始化的操作
默认的构造函数他的参数列表是空的
构造函数在调用类时自动运行
构造函数位于public中

class Clock{
	public:
	Clock(int newT,int newM,int newS);//构造函数与类同名
	void setTime(int newT,int newM,int newS);
	void showTime();
	private:
	int hour,minute,second;
};
Clock::Clock(int newT,int newM,int newS){
	hour = newT;
	minute = newM;
	second = newS;
}//给private中的值有一个初始化的操作,调用类的时候会自动运行

Clock myclock(1,2,3);//写了构造函数,那么就要在变量声明中将变量实例化

2.析构函数

析构函数一般没有参数;
析构函数主要是用来在程序结束后释放掉类所占的内存的;
默认构建一个类存在一个析构函数;
也是自动调用

class Clock{
	public:
	Clock(int a,int b,int c);
	void setTime(int a,int b,int c);
	void showTime();
	~Clock();
	private:
	int hour,minute,second;
}

Clock::~Clock(){};

3.复制构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:

通过使用另一个同类型的对象来初始化新创建的对象。

复制对象把它作为参数传递给函数。

复制对象,并从函数返回这个对象。

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数(会遇到深拷贝和浅拷贝的问题!)

class Clock{
	public:
	Clock(int a,int b,int c);
	Clock(const Clock &obj);
	void setTime(int a,int b,int c);
	void showTime();
	private:
	int hour,minute,second;
	
};

Clock::Clock(const Clock &obj){
	hour = obj.hour;
	minute = obj.minute;
	second = obj.second;
}//就类似于将原来的已经调试过的一个对象的private全部复制给新的对象
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值