1、转换构造函数(将整数转化成类类型)
- 参数满足下列条件时称为转换构造函数
— 有且只有一个参数
— 参数是基本类型
— 参数是其它类类型
转换构造函数被 explicit 修饰时只能进行显示转换
— 转换方式
1、static_cast<Test>(100);
2、Test(100);
3、(Test)i;
//不推荐
2、类型转换函数(将类类型转换成其它类型)
- C++类中可以定义类型转换函数
- 类型转换函数用于将类对象转换成其它类型
- 语法规则:
operator Type()
{
Type ret;
//...
return ret;
}
— 无法抑制隐式的类型转换函数调用
— 类型转换函数可能与转换构造函数冲突
— 工程中以 Type toType() 的公有成员代替类型转换函数。
Value toValue() //Test类类型转换成Value类类型
{
Value ret;
cout << "Value toValue() " << endl;
return ret;
}
3、继承
继承,意思是子类能访问父类的成员;只是能用,但是本质还是父类的。
没有显式调用父类的构造函数,所以默认就是调用无参构造函数
- 构造规则
— 子类对象在创建时会首先调用父类的构造函数
— 先执行父类构造函数再执行子类的构造函数
— 父类构造函数可以被隐式调用或者显示调用 - 对象创建时构造函数的调用顺序
1、 调用父类的构造函数
2、 调用成员变量的构造函数
3、 调用类自身的构造函数
口诀心法:先父母,后客人,再自己
4、父子间的冲突
1、子类没有定义父类的同名成员函数:
那么子类对象是可以访问父类的成员函数的
2、子类定义了父类的同名成员函数:
子类访问的就是子类自己的成员函数,父类的同名函数就会被隐藏。子类对象不能调用父类里面的函数,要加上作用域分辨符才能调用。