我现在已经看过几次了,我一直在摸不着头脑,想知道为什么......
例如:(http://www.codeguru.com/forum/showthread.php?t=377394)
void LeftClick ( )
{
INPUT Input={0};
// left down
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
::SendInput(1,&Input,sizeof(INPUT));
// left up
::ZeroMemory(&Input,sizeof(INPUT));
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
::SendInput(1,&Input,sizeof(INPUT));
}
Run Code Online (Sandbox Code Playgroud)
这个例子在没有::(范围)运算符的情况下工作,为什么它们甚至在那里呢?
如果我有一个定义多个常量变量的类,那么......
class SomeClass {
public:
SomeClass() : SOME_CONSTANT(20), ANOTHER_CONSTANT(45), ANOTHER_CONSTANT2(25), ANOTHER_CONSTANT2(93) { }
private:
const int SOME_CONSTANT;
const int ANOTHER_CONSTANT;
const int ANOTHER_CONSTANT2;
const int ANOTHER_CONSTANT3;
Run Code Online (Sandbox Code Playgroud)
是否会优化此类的多个实例以指向常量的相同内存?或者我可以通过使每个常量保持静态来节省内存?
我在游戏中有一个星级课程,我希望它们使用相同的纹理,所以我想出了这个代码......
sf::Texture* Star::starTexture = NULL;
unsigned int Star::refCount = 0;
Star::Star() : starSpeed(0), starScale(0), locX(0), locY(0)
{
if (starTexture == NULL)
{
starTexture = new sf::Texture();
}
refCount++;
}
Star::~Star()
{
refCount--;
if (refCount == 0)
{
delete starTexture;
starTexture = NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的星级......
for (int i = 0; i < STAR_COUNT; ++i)
{
Star star;
star.Initialize(/* blah blah */);
starVector.push_back(star);
}
Run Code Online (Sandbox Code Playgroud)
我是"高级c ++技术"的新手,我担心这不起作用.我需要定义一个复制构造函数吗?矢量会使我的引用计数搞乱吗?我愿意接受更好的方法来做到这一点.我想我可以保持类外的纹理,并在初始化每个星时传递一个引用,但我更喜欢留在类中的纹理...