cocos2d-x-3.3rco版本<一>C++中类的静态的私有成员变量初
今天开始研究cocos2d-x-3.3rco版本,顺便温习一下C++知识,温故而知新~ 知识点一:宏定义#pragma once与#ifndef...#define...#endif优劣,如VisibleRect.h中 #ifndef __VISIBLERECT_H__ #include "cocos2d.h" class VisibleRect static cocos2d::Vec2 left(); #endif /* __VISIBLERECT_H__ */ 一般情况下,使用#pragma once即可,优点:代码简洁,维护性好,避免看重复定义以及包含范围时易出错的情况;编译速度快,编译器在此时根本不会重复打开文件,大大提高了效率。缺点#pragma once 不是国际标准,只是微软C++的一个功能,但现在大多数主流C++编译器也都实现了这个功能。 问题二:在这里碰见了static cocos2d::Rect s_visibleRect;//静态的私有成员变量,那么如何初始化呢? 1.static成员的所有者是类和对象,多个对象拥有一样的静态成员,从而在定义对象时不能通过构造函数对其进行初始化。 2.静态成员不能再类定义里面初始化,只能在class body外面初始化。 3.静态成员依旧遵循public、private、protected的访问准则。 4.静态成员函数没有this指针,它不能返回非静态成员,因为对象会调用,类本身也可以调用。 在VisibleRect.cpp中给予了初始化, #include "VisibleRect.h" USING_NS_CC; Rect VisibleRect::s_visibleRect; void VisibleRect::lazyInit() .................. OK,这个暂时结束。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |