首页 > 其他分享 >类继承的合法调用

类继承的合法调用

时间:2024-03-05 10:57:13浏览次数:19  
标签:调用 继承 private show1 A1 合法 public show2

#include <iostream>
using namespace std;
class A1{
public:
    void show1() {
        cout << "class A1" << endl;
    }
};
class A2 : public A1{
    void show2() {
        cout <<"class A2" << endl;
    }
};
class A3 : protected A2 {
    void show3() {
        cout << "class A3"<< endl;
    }
};
int main()
{
    A1 obj1;
    A2 obj2;
    A3 obj3;
    obj1.show1();  //合法
    obj2.show1();  //合法
    obj3.show1();  //非法
    obj3.show3();  //非法
    return 0;
}

A1 : show1()  public

A2 : show1()  public  show2()  private

A3 : show1()  protected  show2()  private  show3()  private

众所周知,类的保护成员函数、私有成员函数不能直接从外部调用,所以最后两个调用是非法的

 

标签:调用,继承,private,show1,A1,合法,public,show2
From: https://www.cnblogs.com/uacs2024/p/18053497

相关文章

  • 34理解虚基类和虚继承
    理解虚基类和虚继承抽象类:有纯虚函数的类。而虚基类是被虚继承的类。classB:virtualpublicA如果是普通继承,B对象内存开头存储基类A的成员,后接B的独有成员。虚继承后B对象内存开头存储一个vbptr(virtualbaseptr),指向一个vbtable,vbtable存储两个偏移量,第一个偏移量是vbptr......
  • 35多继承-菱形继承
    多继承-菱形继承菱形继承会导致相同的基类成员出现多份拷贝,解决方法是使用虚继承。这样可以实现更多代码的的复用#include<iostream>usingnamespacestd;classA{private: intma;public: A(inti):ma(i) { cout<<"A()"<<endl; } ~A() { cout<<"~A(......
  • c++在类外是不能直接调用私有成员函数的
    c++在类外是不能直接调用私有成员函数的,比如#include<iostream>usingnamespacestd;classA3{voidshow3(){cout<<"classA3"<<endl;//注意,类内部默认是私有}};intmain(){A3obj3;obj3.show3();//这里出错return0;}......
  • ROS 同一工作空间下两个功能包如何相互调用
    如何在同一工作空间下调用另一ros功能包本项目有两个ros功能包,a_pack和b_pack,a_pack调用了b_pack的函数,本项目为了展示如何配置b_pack和a_pack功能包,让a_pack可以调用b_pack。在c++编程中,常见用法是将b_pack编译成库文件,然后b_pack对外提供头文件,a_pack对b_pack的调用就是通过引......
  • swfit 调用 自带的地图
    importMapKitimportSwiftUIimportCoreLocationclassViewController:UIViewController,MKMapViewDelegate{varmainMapView:MKMapView!letlocationManager:CLLocationManager=CLLocationManager()overridefuncviewDidLoad(){......
  • 微软Win11重要更新:支持PC无线调用手机、平板摄像头
    近日微软官方宣布,Windows11预览版现已可以调用安卓手机或平板电脑的摄像头功能。用户可以将移动设备的高品质摄像头无线应用到PC上,体验更加灵活、方便的视频体验。据介绍,Windows11电脑上的所有视频程序,均可以使用手机或者平板的摄像头,同时还支持在前置和后置摄像头之间切换。......
  • 使用setmetatable和__call元方法来实现根据字符串名字调用对应的函数
    cc.lualocalCMD={}--定义两个函数functionCMD.func1()print("Function1called")endfunctionCMD.func2()print("Function2called")endreturnCMD test.lualocalfunctions=require"cc"--设置表的元表和__call元方法se......
  • 了解JavaScript 调用堆栈
    每个javascript执行环境都有一个调用堆栈。该调用堆栈用于跟踪函数调用。堆栈是一种后进先出(LIFO)的简单数据结构。我们可以从堆栈中取出的顶部元素是我们压入堆栈的最后一个元素。对于JavaScript调用堆栈,这些元素是函数引用。由于JavaScript是单线程的,因此只有一个堆......
  • 初识IO ,系统调用和库函数
    IO知识最先接触的IO#include<stdio.h>stdio标准的输入输出///标准IOprintf/scanf就是标准的IO接口(API)什么是标准IO什么是文件IO文件IO是系统调用标准IO是库函数什么是系统调用什么是库函数系统调用(posix):用户空间(0-3G)进入内核空间(4G)一次就叫做一次......
  • C++ 函数调用运算符 () 重载
    函数调用运算符()可以被重载用于类的对象。当重载()时,您不是创造了一种新的调用函数的方式,相反地,这是创建一个可以传递任意数目参数的运算符函数。1#include<iostream>2usingnamespacestd;3classDistance4{5private:6intfeet;/......