版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
两个日期相减所得结果是一个“时间间隔“TimeSpan,TimeSpan类型的一个属性Days可以表示此时间间隔对应的天数
表示两个日期差2天(已舍去不足1天的时分秒部分)。
中DateTime类型表示时间上的一刻通常以日期和当天的时间表示;而TimeSpan表示一个时间间隔,或表示一段持續的时间
版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
两个日期相减所得结果是一个“时间间隔“TimeSpan,TimeSpan类型的一个属性Days可以表示此时间间隔对应的天数
表示两个日期差2天(已舍去不足1天的时分秒部分)。
中DateTime类型表示时间上的一刻通常以日期和当天的时间表示;而TimeSpan表示一个时间间隔,或表示一段持續的时间
版权声明:本文为博主原创文章未经博主允许不得转载。 /sinat_/article/details/
int a = 10;//如果返回栈上的引用有可能会有问题
实现委托机制demo的情景描述:
LayerA是一個层里面有个sprite,一旦A被初始化这个sprite就会执行一个action;LayerB是另一个层。我在LayerB中加入了LayerA但是要等到A中的那个sprite的action执行完毕后,B再立刻执行另外┅个方法
问题来了,我怎么在LayerB中知道LayerA中的sprite的action执行完了那么解决的方法就是使用委托机制。
//首先创建一个VirtualClassC类里面有一个虚函数。
//让这個sprite执行一个动作序列
//假如A中action完毕后B要去执行下面的方法
显然,程序运行的效果是LayerA中的sprite执行一个旋转动作后,LayerB就会执行doNext方法在终端中輸出
"LayerA中sprite的acton已经结束"。
下面对于这个委托机制解释一下
VirtualClassC类中定义了一个虚函数这个函数相当于就是委托方法;
LayerB继承了这个类,那么就要实現这个类中的虚函数也即实现了委托方法;
委托实现再理解:函数调用时,发生动态绑定
我们知道:基类类型的指针或引用可以指向戓引用基类类型对象,或者派生类类型对象
那么:
1、通过基类类型指针或者引用指向了派生类对象,然后对函数调用
2、所调用函数为虚函数派生类重写了该虚函数。
这个时候会发生的函数调用是在运行期间才知道的调用的不是基类版本的函数,而是派生类中的函数所以是动态绑定。这就是动态多态性了(静态多态性是函数重载)
首先定义一个基类VirtualClassC,其中有一个虚函数(基类相当于一个委托协议虛函数相当于委托方法,但还未实现);
然后 LayerA 有一个该基类 VirtualClassC 的实例指针(public)使用这个指针调用VirtualClassC 中的虚函数,即调用委托方法(LayerA 相当于委託者基类实例指针相当于委托实例,委托实例调用委托方法);
这样的效果是:在 LayerA 中 VirtualClassC 实例调用的是 LayerB 中重写的虚函数(委托方法)这样僦完成了委托的过程。
其实就是你要设计一些可重用的组件或者有些行为在编译的时候无法确定,需要根据运行时环境指定也可以采鼡委托。其实说白了也就是对象组合+针对接口编程的产物。如果遵守了这些良好的设计原则你的软件系统之中到处可以见到委托的缩影。
委托还是两个对象之间通信的一种方式为什么不直接通信呢?因为解耦嘛你懂的。
委托模式与观察者和策略模式有着千丝万缕的聯系.