1
2
3
4
5
6
7
8
9
|
//
void
f(
int
);
//#1
void
f(
char
*);
//#2
//C++03
f(0);
//二义性
//C++11
f(nullptr)
//无二义性,调用f(char*)
//
|
1
2
3
4
5
6
7
|
//
//v2.x
CCSprite *pSprite = CCSprite::create(
"HelloWorld.png"
);
//v3.x
auto
pSprite = Sprite::create(
"HelloWorld.png"
);
//
|
1
2
3
4
|
//
int
x = 3;
decltype
(x) y = x;
//
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//
struct
B {
virtual
void
f();
virtual
void
g()
const
;
void
k();
// not virtual
};
struct
D : B {
void
f() override;
// OK: overrides B::f()
void
g() override;
// error: wrong type
void
k() override;
// error: B::k() is not virtual
};
//
|
1
2
3
4
5
6
7
8
9
10
11
|
//
struct
B {
virtual
void
f()
const
final;
// do not override
virtual
void
g();
};
struct
D : B {
void
f()
const
;
// error: D::f attempts to override final B::f
void
g();
// OK
};
//
|
1
2
3
4
5
6
|
//
map<string,
int
> m{{
"a"
, 1}, {
"b"
, 2}, {
"c"
, 3}};
for
(
auto
p : m){
cout<<p.first<<
" : "
<<p.second<<endl;
}
//
|
1
2
3
4
5
6
7
8
|
//
auto
closeItem = MenuItemImage::create(
"CloseNormal.png"
,
"CloseSelected.png"
,
[](Object* sender)
{
Director::getInstance()->end();
//直接在这里添加按钮要调用的代码
} );
//
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//
std::function<
void
(
const
std::vector<Touch*>&, Event*)> onTouchesBegan;
std::function<
void
(
const
std::vector<Touch*>&, Event*)> onTouchesMoved;
std::function<
void
(
const
std::vector<Touch*>&, Event*)> onTouchesEnded;
std::function<
void
(
const
std::vector<Touch*>&, Event*)> onTouchesCancelled;
// new callbacks based on C++11
#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)
#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#define CC_CALLBACK_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)
#define CC_CALLBACK_3(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__VA_ARGS__)
//
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//
// v2.1 版本
CCMenuItemLabel *item = CCMenuItemLabel::create(label,
this
, menu_selector(MyClass::callback));
// v3.0 版本 (短版本)
auto
item = MenuItemLabel::create(label, CC_CALLBACK_1(MyClass::callback,
this
));
// v3.0 版本 (长版本)
auto
item = MenuItemLabel::create(label, std::bind(&MyClass::callback,
this
, std::placeholders::_1));
// v3.0 中你也可以使用lambda表达式或者其他函数对象
auto
item = MenuItemLabel::create(label,
[&](Object *sender) {
// do something. Item "sender" clicked
});
//
|
1
2
3
4
5
6
7
|
//
// v2.1
virtual float getScale();
// v3.0
virtual float getScale()
const
;
//
|
1
2
3
4
5
6
7
|
//
// v2.1
void
setTexParameters(ccTexParams* texParams);
// v3.0
void
setTexParameters(
const
ccTexParams& texParams);
//
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//
// in v2.1
ccColor3B color3B = ccc3(
0
,
0
,
0
);
ccc3BEqual(color3B, ccc3(
1
,
1
,
1
));
ccColor4B color4B = ccc4(
0
,
0
,
0
,
0
);
ccColor4F color4F = ccc4f(
0
,
0
,
0
,
0
);
color4F = ccc4FFromccc3B(color3B);
color4F = ccc4FFromccc4B(color4B);
ccc4FEqual(color4F, ccc4F(
1
,
1
,
1
,
1
));
color4B = ccc4BFromccc4F(color4F);
color3B = ccWHITE;
// in v3.0
Color3B color3B = Color3B(
0
,
0
,
0
);
color3B.equals(Color3B(
1
,
1
,
1
));
Color4B color4B = Color4B(
0
,
0
,
0
,
0
);
Color4F color4F = Color4F(
0
,
0
,
0
,
0
);
color4F = Color4F(color3B);
color4F = Color4F(color4B);
color4F.equals(Color4F(
1
,
1
,
1
,
1
));
color4B = Color4B(color4F);
color3B = Color3B::WHITE;
//
|