📜  指向派生类对象的基类指针

📅  最后修改于: 2021-05-30 19:21:46             🧑  作者: Mango

指针是存储另一个变量地址的变量,称为指针。

基类指向派生类的不同对象的指针

方法:

  • 派生类是从其基类获取一些属性的类。
  • 确实,一个类的指针可以指向其他类,但是类必须是基类和派生类,然后才有可能。
  • 要访问基类变量,将使用基类指针。
  • 因此,指针是基类的类型,并且由于指针是基类,因此它可以访问基类的所有公共函数和变量,这称为绑定指针。
  • 在此指针中,基类归基类所有,但指向派生类对象。
  • 同样适用于派生类指针,值已更改。

下面是C++程序,用于说明指向派生类的基类指针的实现:

C++
// C++ program to illustrate the
// implementation of the base class
// pointer pointing to derived class
#include 
using namespace std;
 
// Base Class
class BaseClass {
public:
    int var_base;
 
    // Function to display the base
    // class members
    void display()
    {
        cout << "Displaying Base class"
             << " variable var_base: " << var_base << endl;
    }
};
 
// Class derived from the Base Class
class DerivedClass : public BaseClass {
public:
    int var_derived;
 
    // Function to display the base
    // and derived class members
    void display()
    {
        cout << "Displaying Base class"
             << "variable var_base: " << var_base << endl;
        cout << "Displaying Derived "
             << " class variable var_derived: "
             << var_derived << endl;
    }
};
 
// Driver Code
int main()
{
    // Pointer to base class
    BaseClass* base_class_pointer;
    BaseClass obj_base;
    DerivedClass obj_derived;
 
    // Pointing to derived class
    base_class_pointer = &obj_derived;
 
    base_class_pointer->var_base = 34;
 
    // Throw an error
    base_class_pointer->display();
 
    base_class_pointer->var_base = 3400;
    base_class_pointer->display();
 
    DerivedClass* derived_class_pointer;
    derived_class_pointer = &obj_derived;
    derived_class_pointer->var_base = 9448;
    derived_class_pointer->var_derived = 98;
    derived_class_pointer->display();
 
    return 0;
}


输出:

Displaying Base class variable var_base: 34
Displaying Base class variable var_base: 3400
Displaying Base classvariable var_base: 9448
Displaying Derived  class variable var_derived: 98

结论:

  • 指向派生类的指针是指向派生类的基类的指针,但是它将保持其外观。
  • 基类的指针将能够调整其自身类的函数和变量,并且仍然可以指向派生类对象。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”