【c++语言程序设计】公有派生类和基类对象之间的转换
·
一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。
具体表现在:
派生类的对象可以隐含转换为基类对象。
公有继承表示派生类对象是基类对象的一种特殊类型
派生类对象可以被隐式转换为基类对象,这样你就可以把一个派生类对象传递给接受基类对象的函数,或者将其赋值给基类对象。
class Base {
public:
void show() {
std::cout << "Base class" << std::endl;
}
};
class Derived : public Base {
public:
void display() {
std::cout << "Derived class" << std::endl;
}
};
int main() {
Derived d; // 派生类对象
Base b = d; // 派生类对象隐式转换为基类对象
b.show(); // 使用基类的成员
// b.display(); // 错误,基类对象不能调用派生类的成员
return 0;
}
派生类的对象可以初始化基类的引用。
int main() {
Derived d; // 派生类对象
Base& b = d; // 派生类对象初始化基类引用
b.show(); // 使用基类成员
// b.display(); // 错误,基类引用不能调用派生类的成员
return 0;
}
通过基类的引用来操作派生类的对象
通过基类引用只能调用基类中定义的成员函数,不能直接访问派生类新增的成员
派生类的指针可以隐含转换为基类的指针
派生类的指针也可以隐式转换为基类的指针。这使得你可以通过基类指针来访问派生类对象,但同样只能访问基类的成员
int main() {
Derived d; // 派生类对象
Base* b = &d; // 派生类指针隐式转换为基类指针
b->show(); // 使用基类的成员
// b->display(); // 错误,基类指针不能调用派生类的成员
return 0;
}
替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员
【只能访问基类中的成员,无法直接访问派生类新增的成员】
更多推荐


所有评论(0)