一、类成员简介
1、成员函数
(在类内部定义的函数默认为Inline)
调用成员函数时,实际上是使用对象来调用的。
每个成员函数(除了static成员函数外)都有一个额外的、隐含的形参this;在调用成员函数时,形参this初始化为调用函数的对象的地址。
2、构造函数
主要用来在创建对象时初始化对象,即对对象成员变量赋初始值
3、析构函数
与构造函数相反,当对象脱离作用域的时候,(例如对象所在的函数已调用完毕)系统自动执行析构函数,做清理善后的工作,释放内存,delete释放
二、继承机制中引用和指针之间如何转换
基类->派生类:用dynamic_cast转换(显式转换),首先检查基类指针(引用)是否真正指向一个派生类对象,然后再做相应的处理,对指针进行dynamic_cast,成功返回派生类对象,失败返回空指针;对引用进行dynamic_cast,成功返回派生类对象,失败抛出一个异常。不允许隐式转换;
派生类->基类:可以用dynamic_cast或者直接进行类型转换(直接赋值)
三、类的继承例子
#include<iostream>
using namespace std;
class DataType {
private:
int year, month, day;
public:
DataType(int year_ = 1997, int month_=10, int day_ = 6) {
year = year_;
month = month_;
day = day_;
cout << "DataType的构造函数" << endl;
}
//也可以这样写
/*DataType(int year = 1997, int month = 10, int day = 6) {
this->year = year;
this->month = month;
this->day = day;
cout << "DataType的构造函数" << endl;
}*/
void display() {
cout << year << "年" << month << "月" << day << "日" << endl;
}
~DataType() {
cout << "DataType的析构函数" << endl;
}
};
class TimeType {
private:
int h, m, s;
public:
TimeType(int h_ = 12, int m_ = 30, int s_ = 30) {
h = h_;
m = m_;
s = s_;
cout << "TimeType的构造函数" << endl;
}
void display() {
cout << h << "时" << m << "分" <<s << "秒" << endl;
}
~TimeType() {
cout << "TimeType的析构函数" << endl;
}
};
class DataTimeType :public DataType, public TimeType {
public:
DataTimeType(int year_,int month_,int day_,int h_,int m_,int s_):TimeType(h_,m_,s_),DataType(year_,month_,day_){}
void display() {
DataType::display();
TimeType::display();
}
};
int main() {
DataTimeType dt(2014,5,12,17,2,10);
dt.display();
//system("pause");
return 0;
}