CAU程序设计2 class1 类与构造函数

什么是类?

#include <iostream>
using namespace std;

class Cmytime{
private:
	int hour, min, sec;
public:
	void Set(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	} 
	void Show(){
		cout << hour << ":" << min << ":" << sec << std::endl;
	}
};

上述代码中关键词class后创建的结构称为类,老师将其解释为程序的一个零件。

类包括私有的资源(private)和公开的资源(public);私有的资源只能在类内部直接调用,公开的资源才能在类外部直接调用,外部想调用私有的资源只能间接的使用公开的函数。

什么是构造函数?

class Cmytime{
private:
	int hour, min, sec;
public:
//构造函数的开始
	Cmytime(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	}
//构造函数的结束
	void Set(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	} 
	void Show(){
		cout << hour << ":" << min << ":" << sec;
	}
};

如上述代码所示,与类名相同的函数就是构造函数,构造函数没有返回类型,被调用时只在类对象出生时生效

构造函数可以重载

class Cmytime{
private:
	int hour, min, sec;
public:
	Cmytime(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	}
	Cmytime(){
		hour = 0;
		min = 0;
		sec = 0;
	}
	Cmytime(int h){
		hour = hour;
		min = 0;
		sec = 0;
	}
	void Set(int h, int m, int s){
		hour = h;
		min = m;
		sec = s;
	} 
	void Show(){
		cout << hour << ":" << min << ":" << sec;
	}
};

上述类当中的三个都是构造函数,用于应付不同情况类的构造。

拷贝构造

拷贝构造可以实现用一个对象来初始化另一个对象

#include <iostream>
using namespace std;

class Point {
public:
    int x, y;
    Point(int a, int b) : x(a), y(b) {}
    Point(const Point& other) : x(other.x), y(other.y) { // 拷贝构造
        cout << "Copy Constructor called!" << endl;
    }
};

int main() {
    Point p1(1, 2);      // 普通构造
    Point p2 = p1;       // 调用拷贝构造
    Point p3(p1);        // 调用拷贝构造
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值