【Cocos2d-x v3.0 亮点】
-
使用 C++(C++11) 的特性取代了 Objective-C 的特性
-
优化了 Labels
-
优化了渲染器(比 v2.2 更快)
-
新的事件分发机制
-
物理引擎集成
-
新的 UI 对象
-
模板容器
*使用 cocos2d::Map<> 替代了 CCDictionary,用法
*使用 cocos2d::Vector<> 替代了 CCArray,serif; font-size:14px"> *使用 cocos2d::Value 替代了 CCBool,CCFLoat,CCDouble,serif; font-size:14px">
1、C++11 特性
C++11 FAQ请查看这里:http://www.stroustrup.com/C++11FAQ.html
1.1、新的关键字及语法
(1)nullptr
nullptr是为了解决NULL的二义性,因为NULL实际上代表的是0。
1
2
3
4
5
6
|
(2)auto
根据上下文自动类型推导。
//v2.x
CCSprite*pSprite=CCSprite::create(
"HelloWorld.png"
);
//v3.x
autopSprite=Sprite::create(
);
|
(3)decltype
decltype与此相反,从变量或表达式中获取类型。
x=3;
decltype(x)y=x;
|
(4)override
派生类重写基类的虚函数时,在函数的声明中加上override(非必须)。
struct
B{
virtual
f();
g()
const
;
k();
//notvirtual
};
D:B{
f()override;
//OK:overridesB::f()
g()override;
//error:wrongtype
k()override;
//error:B::k()isnotvirtual
};
|
(5)final
可用来修饰基类的虚函数,表示该函数不可被派生类重写即override。
f()
final;
//donotoverride
g();
};
;
//error:D::fattemptstooverridefinalB::f
g();
//OK
(6)序列for循环 |