类与类的继承

一、类成员简介
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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值