4-9 智能指针、仿函数、namespace、类模板、函数模板、成员模板

1 两种特殊的类:像指针的类、像函数的类

shared_ptr智能指针:比一般的指针更聪明,2.0之前有个auto pointer

 

1)智能指针是模板

2)智能指针里面肯定有个指针,px;

3)初始化的方法要注意一下,

一般:Foo *sp;

智能指针:shared_ptr<Foo> sp(new Foo);  // 模板中写Foo类名,sp没有*,new一个Foo传给构造函数。这个new的值,可以在析构函数中释放。

4)sp->method()中的“sp ->”会变成px,变成pxmethod()了?解释:箭头符号会继续作用下去

5)如果你是C++新手,强烈建议使用库

链表迭代器智能指针:

1)迭代器里真正的指针就是link_type,是一个指向结点的指针

data是什么类型的?模板的类型。

List<Foo>::iterator ite;  // ite就是一个迭代器,是一个智能指针

注意操作符*和->的实现和上一例子的区别,因为这里又包装了一层node,node里面的data才是真正的数据,所以这里的这两个符号重载有些不一样。

 

2 让一个类像函数(仿函数),重载()

pair:一只鸟和一条鱼合成一个pair也行

上面这三个类型,不是标准库中的,在glue c?里有

灰色的部分其实是这样的,继承了另一个class:

 

 还有加、减、等于、小于仿函数。

仿函数都会继承一些奇怪的父类,这些父类sizeof为0(因为一些原因,可能是1),只有typedef,

作用:这里不提

 

3 namespace:

在一个测试文件中用namespace把好几个函数包起来。

在一个main中加入100个测试程序。

 

4 类模板(比面向对象简单)、函数模板、成员模板

函数模板在使用时不必指明类型,调用时编译器就可以退出来参数类型。

黄色部分在模板里,而它自己又是一个模板,以下为实例:

 

 可以,反之不可以。这里有点看不懂。

up-cast:父类的指针指向子类?

模板的一个遗留问题:成员模板。

 

posted @   妖山鬼店  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示