-
-
[分享]继承
-
发表于: 2021-5-26 01:24 2857
-
为了解决代码重复(冗余)
概念
继承- 子类继承父类
派生- 基类派生 派生类
公有权限影响
父类中的权限 子类是否可以访问 类外是否可以访问
public yes yes
private no no
protected yes no
保护继承
从没见过
私有继承
很少用到
子类构造初始化父类的成员
1 2 3 | CPot3D( int x, int y, int z):CPot2D(x,y),m_nZ(z) { } |
只有这种方式 通过初始化列表的方式调用父类的带参构造
继承内存分布(没有多态,多重继承)
父类成员
子类成员
父类指针指向子类是可以的安全的。
子类指针指向父类是不安全的,可能会越界访问。
函数(数据成员)隐藏
如果子类个父类又同名的函数(同名数据成员),则查找的时候只看用子类的
可以使用::来指定使用父类的函数(数据成员)。
函数指针调用成员函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | class Test { public: void foo() { cout << "foo" << endl; } }; typedef void (Test:: * pfnFoo)(); void foo() { cout << "foo1" << endl; } int main() { Test tt; function <void()> pfn = bind(&Test::foo ,&tt); / / 把成员函数当成全局函数用 pfn(); pfn = foo; / / 成员函数 pfn(); pfn = []() { cout << "3333" << endl; }; / / lamda表达式 pfn(); std::cout << "Hello World!\n" ; } |
赞赏
看原图
赞赏
雪币:
留言: