- 博客(15)
- 资源 (29)
- 收藏
- 关注
转载 C++中避免头文件冲突之#ifndef篇
在头文件中使用#ifdef和#ifndef是非常重要的,可以防止双重定义的错误。如你在头文件aaa.h中定义了一个类aaa如下: class aaa { }; 如果两次#include "aaa.h"(不见得是直接,也有可能两个不同的头文件中都包含了这个头文件)就会出错,因为相同的类不能定义两次。把aaa.h稍做修改: #ifndef _aa
2014-01-09 17:00:09 4884 1
转载 C++类对象创建过程(分配空间、赋值和初始化、对象初始化顺序、虚函数表指针)
http://my.oschina.net/alphajay/blog/5029?from=rssstrong>strong> 初看到这个题目,你可能会有些疑惑:C++类对象的创建还有什么好说的,不就是调用构造函数么?实际上情况并不是想象中的那么简单,大量的细节被隐藏或者被忽略了,而这些细节又是解决一些其他问题的关键,所以我们很有必要深入到这块"神秘"的区域,去探索鲜为人知的秘密。分配空
2014-01-06 19:01:36 1597
转载 NS2是如何识别并调用执行协议的
经过一段时间的代码阅读和资料查阅,在这里我想试着讲明一个困扰大多数NS2 Beginner的问题:Otcl和C++的交互,我们写的新协议(假若有的话)是如何被NS2执行的。就简单的从我们现有的来自长庚大学的802.16的补丁说起。移植完16的补丁我们的NS2就可以执行MAC层协议为“Mac/802_16“的tcl脚本代码。但是这个补丁(wimax_v2.03)里面的代码全都是用C++编写的底层
2014-01-06 15:33:24 715
转载 C++ 枚举类型的思考
至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量)。根据上面对enum类型的描述,有以下几个问题:1.到底enum所定义出来的类型是一个什么样的类型呢?2.作为一个用户自定义的类型其所占用的内存空间是多少呢?3.使用enum类型是否真的能够起到有限集合常量的边界约束呢?
2014-01-05 20:37:48 492
转载 深入解析enum
1 enum是一个关键词,我们可以把它和class放到一块理解为什么可以放到一块理解呢?①因为我们的enum也可以定义类型,和class一样。如:Code:enum weekday{Monday,Tuesday}; 这里的weekday就是一种自定义类型。我们可以用这种类型来定义变量。如:Code:weekday day;
2014-01-05 20:33:49 504
转载 C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装
C++语言中,对于一个枚举类型(enum),其成员值在所属枚举类型的声明作用域内是不可重复的。这个继承自C语言的特性,使我在写程序时碰到有相同名称的枚举成员时,苦于寻找且方便易读的替代枚举名称。这在C++程序开发方面带来了许多的不方便,在涉及枚举类型时必须时刻关注与现有的枚举变量是否有重名,在一定程度上限制了命名的自主性,也会降低程序的可读性。而在Visual Basic 6和.net系列语言
2014-01-05 20:31:11 570
转载 NS2中OTcl类和C++类的连接(完)
当生成一个TclObject时,NS2会自动的建立一个影子编译对象。在3.4.2节中,我们解释了TclObject的生成机制。我们注意到,TclClass类与影子对象的生成有关。我们现在就解释一下TclClass还有影子对象生成的细节。3.5.1 TclClass类综述TclClass负责在编译体系内建议影子对象。该类把OTcl类映射给C++的一个静态的映射变量,并提供在编译体系内生成影子
2014-01-05 09:14:10 862
转载 NS2中OTcl类和C++类的连接(三)
3.4 TclObject 类当建立解释器的对象时,TclObject类会提供建立编译影子对象的方法。TclObject类属于C++类,与OTcl域中的SplitObject类相对应。这两个类是各自体系内除独立类以外的其他所有类的基类。当OTcl域内的一个对象开始初始化时,会调用基类SplitObject的构造函数来完成初始化。其中一项就是影子对象的初始化。3.4.1 TclObject
2014-01-05 09:13:14 1186
转载 NS2中OTcl类和C++类的连接(二)
3.3 InstVar类Instvar类的作用类似于胶水,它负责将C++类的成员变量和OTcl类的实例程序绑定在一起。当一个C++变量和OTcl实例程序绑定在一起时,任何一方的改变都会引起对方的改变(更新)。NS2支持5种数据类型的绑定:实数,整数,带宽,时间,布尔。这5中类型既不是C++数据类型,也不是OTcl数据类型(Tcl以字符的形式存储一切,因此OTcl变量没有数据类型)。定义类型这些
2014-01-05 09:12:20 854
转载 NS2中OTcl 和C++ 的连接 (一)
本文翻译自《Introduction to Network Simulator NS2》中第三章,Linkage BetweenOTcl and C++ in NS2,只翻译了其中重要的段落,略过了其他太细节的解释,但不影响阅读和理解。NS2是一个面向对象的网络模拟器,由OTcl语言和C++语言编就。其中前者负责前台工作(例如用户接口),后者负责后台运算即执行仿真运算。如图1所示,两中语言
2014-01-05 09:11:18 1796
转载 new Simulator 到底做了些什么
转载网址:http://hi.baidu.com/aoxinguy/item/e206041637d450721109b57fnew Simulator 是每个脚本中必须写的一句,而且,也只能写一句(原因见另一贴)接下来,我们通过代码跟踪(C++和Otcl层次)来看一下,new Simulator到底会做些什么~以 set ns [new Simulator] 为例
2014-01-05 09:07:18 706
转载 main之前
前面写过一篇北极之北之main函数之前,这篇文章其实解决的问题是main函数并不是第一个执行的函数,在main之前,函数的入口点是_start, _start会调用glibc里的__libc_start_main,main函数只是这个函数的入参。 在__libc_start_main中某一步,会执行main函数。这是上面一篇博文获取到的知识。 前两天,CU的gongping11写了一
2014-01-05 08:56:31 779
转载 main函数执行前、后再执行的代码
一、main结束 不代表整个进程结束 (1)全局对象的构造函数会在main 函数之前执行, 全局对象的析构函数会在main函数之后执行; 用atexit注册的函数也会在main之后执行。 (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操
2014-01-05 08:54:40 678
转载 NS2变量绑定之bind()
NS2支持C++变量和Tcl变量的双向绑定,这样,能通过它们访问同一个数据,而对其中一个变量做出了修改,与之绑定的变量也被修改. NS2支持5种不同的类型:实数(reals)、整数(integers)、时间(timevalued variables)、带宽(bandwidthvalued variables)、布尔(booleans). 如下说明了5中类型的变量的绑定方法:
2014-01-04 10:49:56 1520
转载 脚本中多次创建Simulator会有什么结果?
转载地址:http://hi.baidu.com/aoxinguy/item/0b19374570056be2bcf4517a从仿真原理上来说,因为NS的仿真都是单线程的,所以,Simulator按理来说只能有一个。因此,我们在脚本中 Set ns [new Simulator] 一般只出现一次。 但是,NS2的仿真代码中,并没有预料到用户新建两个Simulator的实例的情况。 不管
2014-01-04 10:18:38 796
柯志亨NS2仿真实验24
2012-07-11
柯志亨NS2仿真实验19
2012-07-09
NS2仿真实验9
2012-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人