200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 侯捷老师-02面向对象高级编程

侯捷老师-02面向对象高级编程

时间:2022-04-22 22:00:13

相关推荐

侯捷老师-02面向对象高级编程

侯捷老师-02面向对象高级编程

1.Static使用Static本质Static使用Static使用举例-单例模式Static使用举例-单例模式(改进) 2.模板使用Class Template类模板function template 函数模板 3.命名空间使用额外细节4.复合(**has a**)4.1定义4.2复合关系下 类内存大小的计算4.3复合关系下 类中构造、析构顺序4.4复合+继承 5.委托5.1 委托实例( 委托+继承)5.2委托+继承5.2.1 Composite5.2.2 Prototype

1.Static使用

Static本质

正常对象和函数:非静态对象在调用成员函数的时候,会返回自身指针,函数也需要通过指针才能找到对应对象,并对其进行处理。静态数据成员和静态成员函数:

1.静态成员没有“this”指针。

2.静态成员函数只能对静态数据成员进行数据操作。(不接收“this”指针)

Static使用

  Static的两种使用方式:

通过类对象进行调用;通过类名调用

  注意类结构体后一定要对静态成员进行“初始化”。

Static使用举例-单例模式

  单例模式的构造函数在被放在“私有”下。

静态成员只能被静态成员函数调用,因此静态成员函数是唯一和外界沟通的接口。只有静态成员被静态成员函数调用后,才能调用其他函数。由于“a”静态成员对象一直放在“private”下,因此就算不是该类,也一直存在这个对象(占用内存)。

Static使用举例-单例模式(改进)

  对于在没有使用该类还存在一个对象内存的情况,进行改善。

  将静态成员在静态成员函数中进行构造,在没有调用这个静态成员函数的情况下,不会创造该类对象。

2.模板使用

Class Template类模板

function template 函数模板

编译器自动对函数模板进行类型推导。上面两个模板使用“typename”或“class”都可以。

3.命名空间使用

 命名空间“std”可以自己命名,防止和别人代码冲撞。代码最开始包含需要的命名空间。

使用命令使用声明:选择性使用要包含的代码什么都不加

额外细节

4.复合(has a

4.1定义

  在A类中使用B类作为成员对象。流程图表示为实心菱形

4.2复合关系下 类内存大小的计算

4.3复合关系下 类中构造、析构顺序

4.4复合+继承

  由内而外的构造,同理析构由外而内的析构。

5.委托

  设计模式之一:pimpl。左图是对外接口,右图是具体的实现操作。该模式能实现在改变右边(操作内容)的同时,不影响左边,不影响客户端。由于左边是指针,因此能够动态的指向除右边以外的别的类实现,更有弹性。

a、b、c三个指针是左边的rep指针,三指针共享一个内存。虚线圆圈代表右边的代码。如若a、b、c有想改变内容,重新copy一份给它该。

5.1 委托实例( 委托+继承)

  同一份数据使用多个和窗口观察。

5.2委托+继承

5.2.1 Composite

  有名设计模式:Composite

5.2.2 Prototype

  构造函数一定是私有的,不能让外部访问。其中有参构造可以是protect也可以是private的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。