C++Note 同名静态成员处理 继承语法
1 class Base 2 { 3 public: 4 static int m_A;// 静态成员 类名声明 类外初始化 5 }; 6 int Base::m_A = 100; 7 class Son :public Base 8 { 9 public: 10 static int m_A; 11 }; 12 int Son::m_A = 200; 13 //同名静态成员属性 14 void test() 15 { 16 //1.通过对象访问 17 cout << "通过对象的访问" << endl; 18 Son s; 19 cout << " Son m_A = " << s.m_A << endl; 20 cout << " Base m_A = " << s.Base::m_A << endl; 21 //2.通过类名访问 22 cout << "通过类名的访问" << endl; 23 cout << " Son m_A = " << Son::m_A << endl; 24 cout << " Base m_A = " << Base::m_A << endl; 25 cout << " 通过Son继承Base m_A = " << Son::Base::m_A << endl; 26 //第一个::代表类名访问 第二个::代表访问父类作用域下 27 }
函数访问
//继承中同名静态函数 class Base { public: static void func() { cout << "Base - static void func()" << endl; } static void func(int a) { cout << "Son - static void func(int a)" << endl; } }; class Son :public Base { public: static void func() { cout << "Son - static void func()" << endl; } }; void test1() { //通过对象访问 cout << "通过对象访问" << endl; Son s; s.func(); s.Base::func(); //通过类名访问 cout << "通过类名访问" << endl; Son::func(); Son::Base::func(); //Son::func(100);//错误 函数因为同名被隐藏 Son::Base::func(110);//正确 需要加作用域继承 }
C++允许一个类继承多个类
语法:class 子类:继承方式 父类1,继承方式 父类2...
多继承可能会引发父类中有同名成员出现 需要加作用域区分
C++实际开发中不建议用多继承
1 class Base1 2 { 3 public: 4 Base1() 5 { 6 m_A = 100; 7 } 8 int m_A; 9 }; 10 class Base2 11 { 12 public: 13 Base2() 14 { 15 m_A = 100; 16 } 17 int m_A; 18 }; 19 //子类继承Base1和Base2 20 //语法:class 子类:继承方式 父类1,继承方式 父类2... 21 class Son :public Base1,public Base2 22 { 23 public: 24 Son() 25 { 26 m_C = 300; 27 m_D = 400; 28 } 29 int m_C; 30 int m_D; 31 }; 32 void test() 33 { 34 Son s; 35 cout << "sizeof = " << sizeof(s) <<endl;//16 自身两个整型 继承 1 2 共4个整型 36 //当父类中出现同名成员,需要加作用域区分 37 cout << "Base1::m_A = " << s.Base1::m_A << endl; 38 cout << "Base2::m_A = " << s.Base2::m_A << endl; 39 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)