小编Ale*_*rty的帖子

添加太多事件侦听器会影响性能吗?

我有一个关于javascript(jQuery)事件/监听器的一般问题.点击监听器的数量是否有任何限制而不会出现性能问题?

javascript jquery events actionlistener onclicklistener

38
推荐指数
2
解决办法
2万
查看次数

子对象是否有指向其父对象的错误做法?

在C++应用程序中,假设我有一个窗口类,它有几个控件类实例.如果我的窗口想要通知控件已被单击,我可能会使用:

control[n]->onClick();
Run Code Online (Sandbox Code Playgroud)

现在让我们说控件需要知道它的父窗口的大小,或者其他一些信息.为此我正在考虑给控件一个指向自身(this)的指针作为它的构造函数的参数.然后我会从控件onClick()方法中调用这样的调用:

Size windowsize = parent->getSize();
Run Code Online (Sandbox Code Playgroud)

这会被视为不良做法,还是以任何其他方式与面向对象编程的价值相矛盾?如果是这样,他会采取什么样的"正确"方式?

作为一个附带问题,有一个Class或Class*的向量会更好吗?是否值得增加速度增益的复杂性?(向量的变化很少).

c++ oop

13
推荐指数
4
解决办法
3896
查看次数

比较C++中的类型名称

我把它键入模板函数,只是为了看看它是否可行:

if (T==int)
Run Code Online (Sandbox Code Playgroud)

并且intellisense没有抱怨.这是有效的C++吗?如果我做了怎么办:

std::cout << (int)int;  // looks stupid doesn't it.
Run Code Online (Sandbox Code Playgroud)

c++

8
推荐指数
3
解决办法
8655
查看次数

Microsoft Visual C++代码优化

在MSVC中,有四种代码优化选项:

  • 没有优化
  • 最小化尺寸
  • 最大化速度
  • 完全优化

前三个是不言自明的,但我不确定Full Optimization.这是否试图在大小和速度之间找到平衡,还是比其他两个选项做得更好?请澄清它的含义.

c++ optimization

7
推荐指数
1
解决办法
722
查看次数

如何指针指针和运算符地址工作?

拿这段代码:

int a;
int *pointer = &a;

int **b = &(&(*pointer));
Run Code Online (Sandbox Code Playgroud)

以上是否设置b为地址pointer

我问的原因是因为*pointer给出了它的值a,并且它的引用是地址a.这被视为仅仅是地址a,还是被视为pointer.

这有意义吗?我可以这样做:

&(*pointer) = a;
Run Code Online (Sandbox Code Playgroud)

c c++ pointers

6
推荐指数
1
解决办法
468
查看次数

类连续数据

我有一个C++类,它有四个私有浮点数和一堆非静态公共函数来操作这些数据.

是保证,还是可能的,四个花车是连续的,没有填充.这将使类成为四个浮点数的大小,并且它的地址将是第一个浮点数的地址.

c++ class

6
推荐指数
2
解决办法
3548
查看次数

if(pointerVar)是否与if(pointerVar!= NULL)相同?

简单的问题:

if (pointerVar)一样的if (pointerVar!=NULL)吗?

还有,是if (!pointerVar)一样的if (pointerVar==NULL)吗?

给我你最技术上正确/迂腐的答案.这两个陈述似乎也是有意义的.前者是否有任何问题(除了可读性略低)?

c++ pointers

6
推荐指数
2
解决办法
179
查看次数

面向对象的编程

我正在用C++开发一个项目.我意识到我的程序不是OO.

我有一个main.cpp,有几个标题用于不同的目的.每个头基本上是相关函数的集合,其中一些全局变量用于保留数据.我还有一个用于管理窗口的windowing.h.这包含winMain()和winProc().当事件发生时(如点击按钮)或需要信息时(例如"创建此窗口有多大?"),它会调用驻留在main.cpp中的函数.这些函数在windowing.h中包含的单独.h文件中声明.

是否值得将此更改为OO?是值得的工作.有没有更好的方法可以在没有太多变化的情况下构建程序?

欢迎所有反馈,谢谢你花时间阅读本文.

c c++ oop

5
推荐指数
1
解决办法
249
查看次数

双缓冲winAPI

好的,所以在我的应用程序中,有一堆winAPI和一些自定义控件.好极了...

现在,通常情况下,他们会悄悄地重新绘制自己的动画,状态改变等等......一切正常.

但我有一个类Window的方法,名为fix().只要整个窗口需要更新,就会调用此方法.它调整控件的大小并使窗口无效.

当发生这种情况时,绘制背景,然后绘制标签控件,然后绘制所有其他顶部.这会导致非常恼人的闪烁,特别是在调整窗口大小时(因为不断调用fix()).

我尝试过的:

  • WS_EX_COMPOSITED.这只会对各个控件进行双重缓冲.它是一种改进,但闪烁不可避免地仍然存在.
  • 关闭背景图.几乎没有解决问题,实际上使事情变得更糟.

所以:我需要一个技术/方法/任何允许我完全双重缓冲窗口.我认为自己处理WM_PAINT消息可能是一个解决方案,但我不知道从哪里开始.我有一种可怕的感觉,这甚至都不可能......

请帮忙,这是一个关键问题.当这个愚蠢的小问题得到解决时,我会非常放心.

c++ winapi double-buffering

5
推荐指数
1
解决办法
4022
查看次数

为什么 clang 在每次使用时都取消引用参数?

我一直在对工作中的一些代码进行性能优化,并偶然发现了一些奇怪的行为,我将其归结为下面的简单 C++ 代码片段:

#include <stdint.h>

void Foo(uint8_t*& out)
{
    out[0] = 1;
    out[1] = 2;
    out[2] = 3;
    out[3] = 4;
}
Run Code Online (Sandbox Code Playgroud)

然后,我铛(在Windows上)用下面的编译:clang -S -O3 -masm=intel test.cpp。这导致以下程序集:

        mov     rax, qword ptr [rcx]
        mov     byte ptr [rax], 1
        mov     rax, qword ptr [rcx]
        mov     byte ptr [rax + 1], 2
        mov     rax, qword ptr [rcx]
        mov     byte ptr [rax + 2], 3
        mov     rax, qword ptr [rcx]
        mov     byte ptr [rax + 3], 4
        ret
Run Code Online (Sandbox Code Playgroud)

为什么 clang 生成的代码反复将out …

c++ windows clang++

5
推荐指数
1
解决办法
94
查看次数