如何在C++类外部访问私有/保护方法
私有: 声明为 private的类成员仅可以由类内的函数访问。它们不允许直接被任何对象或函数在类外部访问。只有成员函数或友元函数才可以访问类的私有数据成员。
我们可以使用虚函数在其他类中访问私有方法,虚函数是在基类中声明并由派生类重新定义(覆盖)的成员函数。使用指向基类的指针或引用引用派生类对象,可以为该对象调用虚函数并执行派生类的版本。
程序1: 演示私有访问修饰符
输出:
解释:
在上面的程序中,父类有一个函数 void disp() 是一个 虚拟 函数。Child类已经创建了另一个名称相同的函数,即void disp()但该函数是私有的,这意味着不能直接通过类外的任何对象或函数来访问它。在main()中,首先创建child类的对象并传递参数以初始化 secret_key 变量,之后,我们将child类对象的地址存储在基类指针中,这也称为 向上转型 。现在,基类指针保存了child类对象的地址,但是当使用基类指针调用函数时,它只会调用基类函数。但是如果想要调用child类函数以使基类函数 虚拟 。这也称为 运行时多态性。
保护: protected访问修饰符与私有访问修饰符类似,其区别在于被声明为Protected的类成员在类外部是不可访问的,但它们可以被任何该类的子类(派生类)访问。
程序2: 演示保护访问修饰符
输出:
说明 :
在上面的例子中,父类有函数 void disp() 是一个 虚函数 。子类创建了另一个同名函数即void disp(),但该函数是私有函数,这意味着它不能直接被类外的任何对象或函数访问。在main()中,我们首先创建了子类的对象并传递一个参数来初始化子类中的secret_key变量,然后我们将子类对象的地址存储在基类指针中,这也被称为 向上转型(upcasting) 。现在基类指针持有子类对象的地址,但在使用基类指针调用函数时,它只会调用基类函数。但是,如果想调用子类函数,将基类函数 虚函数 。这也被称为 运行时多态(runtime polymorphism) 。 **