C++语法11-调整基类成员在派生类中的访问属性的其他方法

1. 同名成员

在定义派生类的时候,C++语言允许在派生类中说明的成员与基类中的成员名字相同,也就是说,派生类可以重新说明与基类成员同名的成员。如果在派生类中定义了与基类成员同名的成员,则称派生类成员覆盖了基类的同名成员,在派生类中使用这个名字意味着访问在派生类中重新说明的成员。为了在派生类中使用基类的同名成员,必须在该成员名之前加上基类名和作用域标示符”::”,即必须使用如下格式才能访问到基类的同名成员。

基类名::成员名

2. 访问声明

我们已经知道,对于公有继承,基类的公有成员函数也就是派生类的公有成员函数,这意味着外界可以用派生类的对象调用基类的公有成员函数。但是对于私有继承,基类的公有成员函数变成了派生类的私有成员函数了。这是 外界就无法利用派生类的对象直接调用基类的成员函数,而只能通过调用派生类的成员函数(内含调用基类成员函数的语句)间接地调用基类的成员函数。

访问声明的方法就是把基类的保护成员或公有成员直接写至私有派生类定义式中的同名段中,同时给成员名前冠以基类名和作用域标示符 :: 。利用这种方法,该成员就成为派生类的保护类或公有成员了。

说明:

(1)数据成员也可以使用访问声明。

(2)访问声明中只含不带类型和参数的函数或变量名。

(3)访问声明不能改变成员在基类中的访问属性,也就是说,访问声明只能把原基类的保护成员调整为私有派生类的保护成员,把原基类的公有成员调整为私有派生类的公有成员。但是对基类的私有成员不能使用访问声明。

(4)对于基类中的重载函数名,访问声明将对基类中所有同名函数起作用。这意味着对于重载函数使用访问声明时要慎重。

-------------The End-------------
0%