小编rep*_*ant的帖子

为什么::(范围)与空的左操作数一起使用?

我现在已经看过几次了,我一直在摸不着头脑,想知道为什么......

例如:(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)

这个例子在没有::(范围)运算符的情况下工作,为什么它们甚至在那里呢?

c++ scope operator-keyword

11
推荐指数
1
解决办法
2532
查看次数

具有常量变量的类的多个实例对常量使用相同的内存?

如果我有一个定义多个常量变量的类,那么......

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)

是否会优化此类的多个实例以指向常量的相同内存?或者我可以通过使每个常量保持静态来节省内存?

c++ memory optimization static constants

4
推荐指数
1
解决办法
1954
查看次数

使用指向类内存管理的静态指针?

我在游戏中有一个星级课程,我希望它们使用相同的纹理,所以我想出了这个代码......

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 ++技术"的新手,我担心这不起作用.我需要定义一个复制构造函数吗?矢量会使我的引用计数搞乱吗?我愿意接受更好的方法来做到这一点.我想我可以保持类外的纹理,并在初始化每个星时传递一个引用,但我更喜欢留在类中的纹理...

c++ memory static vector copy-constructor

2
推荐指数
1
解决办法
332
查看次数