c++ 父类指针指向派生类对象 能否访问派生类对象独有的成员变量与函数
时间: 2023-12-08 15:06:17 浏览: 196
不可以。当父类指针指向派生类对象时,只能访问派生类对象从父类继承而来的成员变量和函数,而不能访问派生类对象独有的成员变量和函数。如果需要访问派生类对象独有的成员变量和函数,必须将父类指针转换为派生类指针或者引用。需要注意的是,这种转换只有在派生类对象的实际类型是该派生类时才是安全的,否则会导致未定义的行为。
相关问题
cpp通过基类指针只能访问派生类的成员变量,但是不能访问派生类的成员函数。为什么?
在 C++ 中,可以通过基类指针访问派生类的成员变量,但不能访问派生类的成员函数,这是因为在编译时期,编译器只能看到基类的声明,而无法看到派生类的具体实现细节。
因为派生类可能会重载基类的成员函数,因此在编译时期,编译器无法确定基类指针指向的对象的类型,进而无法确定调用哪个版本的成员函数。因此,如果要访问派生类的成员函数,需要使用虚函数。
通过将基类的成员函数声明为虚函数,可以在运行时期通过指针的实际类型调用派生类的成员函数,从而实现动态绑定。这就是多态性的基本实现机制。
c++ 基类指针 调用派生类的方法
基类指针可以调用派生类的方法。这是因为基类指针可以指向派生类的对象,并且在通过指针调用方法时,会根据指针所指向的对象的类型来确定应调用的方法。
通过基类指针调用派生类的方法时,首先需要将基类指针指向派生类的对象。因为派生类对象包含了基类的成员变量和派生类自身的成员变量,所以基类指针可以访问并操作派生类对象中的所有成员变量和成员函数。
当基类指针通过指针调用方法时,编译器会根据指针所指向对象的类型来确定方法的调用方式。如果指针指向的是基类对象,则会调用基类的方法;如果指针指向的是派生类对象,则会调用派生类的方法。这个过程称为多态。
通过基类指针调用派生类的方法可以实现代码的灵活性和可扩展性。因为基类指针可以在运行时指向不同的派生类对象,所以可以根据需要调用不同的方法,而无需修改代码。
总之,基类指针可以通过指针调用派生类的方法,这是多态特性的体现,可以提高代码的灵活性和可扩展性。
阅读全文