C++中添加了类,使得C++具有了面向对象编程的开始。这里主要是如何定义一个C++中的类和如何访问一个实体类对象。
#include<iostream>
using namespace std;
/**
建立一个类的规范
成员变量不能初始化,在构造函数中初始化,和java一样,构造函数可以有多个重载
类对象不需要像java一样new 对象;只要在Time t;就相当于new 了对象,构造函数会由系统自动调用
类中声明的一般方法,我们在类外定义,保证类简洁性。
对象的动态建立和释放;
Time *t = new Time(1,3,2);
delete t;
静态数据成员,static
友元;有元函数
*/
class Time{
private: //定义私有成员变量
int hour;
int minute;
public:
int sec;
public: //在类内定义构造函数,并初始化成员变量0
Time(){
hour = 0;
minute = 0;
sec = 0;
}
//声明有参数构造函数,在类外定义
Time(int hour,int minute,int sec);
//系统默认会自动添加上实现为空的析构函数,它是类的遗言
//我们重写析构函数是为了完成对象释放前的一次操作,如资源释放
~Time(){
cout << "析构函数\n";
}
//声明一般方法
void set_time(int hour,int minute,int sec);
void getTime();
//类内部定义一般函数,this是指向该类的指针
void changeHour(int hour){
this->hour = hour;
}
};
//构造函数可以是有参数的,也可以在类外定义
Time::Time(int h,int m,int s){
hour = h;
minute = m;
sec = s;
}
//类外定义一般方法
void Time::set_time(int _hour,int _minute,int _sec){
hour = _hour;
minute = _minute;
sec = _sec;
}
void Time::getTime() {
cout << hour <<":"<<minute<<":"<< sec<<"\n";
}
/***********************程序入口***************************************/
//对象数组Time times[2];
int main(){
bool flag = true;
if (flag){
Time t; //自动使用无参数构造函数生成t对象;局部t,调用完后,自动执行析构函数
t.set_time(19, 30, 55);
t.getTime();
}
Time mx(23,12,26);
mx.getTime();
mx.set_time(23,12,27);
mx.getTime();
//定义对象数组
Time times[2] = {
Time(11,12,44),
Time(6, 12,44)
};
times[0].getTime();
times[1].getTime();
//对象指针
int *p1 = ×[1].sec;
cout << *p1<<"\n";
Time *p2 = ×[1]; //对象指针p2指向times[1]
p2->getTime(); //调用times[1]中的公有方法和成员
cout << p2->sec<<"\n";
//定义一个函数指针
void(Time::*p3)();
p3 = &Time::getTime; //p3指向类Time中的getTime方法
(times[1].*p3)(); //调用times[1]getTime方法
times[1].changeHour(7);
times[1].getTime();
return 0;
}