什么是类?
#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;
}