ns3学习之旅 Ptr智能指针

 以下是基于《开源网络模拟器ns3 架构与实践》的学习笔记

NS3拥有一套自己开发的类似于C++标准库智能指针的机制,就是Ptr智能指针,简称Ptr指针。

构造 

 Ptr指针由 Ptr 和 SimpleRefCount 两个类模板组成。前者定义了Ptr指针的外部接口,后者是Ptr指针的内部实现。

原理

Ptr指针的使用范式:Ptr<类名> 指针变量名字

可以使用ns3的Create()函数分配内存。主要是让想使用Ptr指针类继承SimpleRefCount,有计数器功能。

使用方法

以Packet类为例 

1 初始化

Ptr<Packet> ptr;

Ptr指针在初始化时不用指定NULL;注意:在标准C++库中,初始化指针需要指向NULL。

2 创建对象以及赋值

使用Create()函数创建对象,使用范式为:Create<类名> (该类的构造函数参数列表),并返回该对象的Ptr指针。等号右侧可以是Ptr指针,也可以是原始指针。

Ptr<Packet> ptr = Create<.Packet>(100); 

备注:

  •  Create()函数:主要用于对象模型中的非Object子类;
  • CreateObject()函数:用于Object类的子类,大部分C++类是Object类的子类;

3 指针运算

ptr->GetUid();

(*ptr).GetUid();

4 比较运算

if(ptr==ptr_1){}

 “==”可以换成“!=”,“<”,“<=”,“>”,“>=”。

5 拷贝

Ptr指针有两种拷贝方式:指针拷贝和对象拷贝。指针拷贝是ns3中常用的拷贝方式。让新生成的Ptr指针指向同一个对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值