C++继承(2)——赋值转换、隐藏特性以及作用域

目录

一.子类和父类对象的赋值转换

子类对象赋值父类对象的另外两种方式:

总结:

二.父类与子类的作用域

1. 在继承体系中基类和派生类都有独立的作用域。

        例:

2.作用域练习

        练习1:

解决方法:

一.子类和父类对象的赋值转换

先来看一个案例:变量间的赋值

int main(){
	int a;
	double b = 10.22;

	a = b;    //赋值转换
	return 0;
}

        在上面这个代码中,有两个变量a,b,这两个变量类型分别为整型和浮点型,而变量b赋值给变量a,变量b的值10.22在赋值给变量a的过程中,产生一个临时变量,10.22拷贝一份给了临时变量,在这个临时变量中进行类型转换,10.22-->10,然后临时变量的值10再赋值给变量a。 

学习了继承的特性后,我们将通过这个案例看看子类和父类对象的赋值转换过程:

class Person {
public:
	void Print() {
		cout << "Person类对象的成员属性:" << endl;
		cout << _age << endl;
		cout << _name << endl;
		cout << _hight << endl;
		cout << _address << endl;
		cout << endl;
        }
public:
	int _age;
	string _name;
	int _hight;
	string _address="TaiYuan";

};

class Student:public Person{
public:
	int _className;
	string _grade;
};

int main(){
    Person p1;
	p1._name = "小曹";
	p1._age = 21;
	p1._hight = 172;
	p1.Print();

	Student s1;
	s1._name = "小王";
	s1._age = 22;
	s1._hight = 170;
	s1._grade = "大三";

	//将子类对象的成员值复制给父类对象
	p1 = s1;			
}

        此时p1对象的成员值就是s1的成员值,但p1并不会有Student子类所创_grade,_className成员变量值,在赋值操作中,子类对象只会将它继承过来的成员值重新赋回给父类对象!!!

 

 这就是子类对象对父类对象的赋值转换——支持向上转换,不支持向下转换。

        也就是说父类对象不能赋值给子类对象,因为父类对象中并没有子类对象的_classname、_grade成员值,那它就不能赋!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙予清的zzz~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值