首页
社区
课程
招聘
[分享]继承
发表于: 2021-5-26 01:24 2791

[分享]继承

2021-5-26 01:24
2791

为了解决代码重复(冗余)

概念

继承- 子类继承父类
派生- 基类派生 派生类

公有权限影响

父类中的权限 子类是否可以访问 类外是否可以访问
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)
{
}

只有这种方式 通过初始化列表的方式调用父类的带参构造

继承内存分布(没有多态,多重继承)

父类成员
子类成员

 

父类指针指向子类是可以的安全的。
子类指针指向父类是不安全的,可能会越界访问。

函数(数据成员)隐藏

如果子类个父类又同名的函数(同名数据成员),则查找的时候只看用子类的
可以使用::来指定使用父类的函数(数据成员)。

函数指针调用成员函数

image.png

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";
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//