相关疑难解决方法(0)

禁止创建临时对象

在多线程应用程序中调试崩溃时,我终于在此语句中找到了问题:

CSingleLock(&m_criticalSection, TRUE);
Run Code Online (Sandbox Code Playgroud)

请注意,它正在创建一个CSingleLock类的未命名对象,因此在此语句之后,临界区对象会立即解锁.这显然不是编码员想要的.此错误是由简单的输入错误引起的.我的问题是,有些我可以防止在编译时自己创建类的临时对象,即上面的代码类型应该生成编译器错误.一般来说,我认为每当一个类尝试进行某种资源获取时,就不应该允许该类的临时对象.有没有办法强制执行呢?

c++ mfc temporary

26
推荐指数
2
解决办法
2419
查看次数

有没有一个有效的案例来创建一个立即被销毁的临时文件,而不是直接在C++中使用?

灵感来自这个问题.假设我有class Lock一个默认的构造函数,在某些代码中我编写了以下语句:

Lock();
Run Code Online (Sandbox Code Playgroud)

这将产生创建临时对象class Lock并立即销毁它的效果.当然,创作可能会产生一些副作用,这改变程序行为,但这看起来很奇怪.

所以我的第一个猜测是,从语言角度看,这些语句完全有效,很可能包含逻辑错误.

上述声明是否有一些有效的用例?是否有一些众所周知的流行习语包括这些陈述?为什么我要在正确的程序中使用这些语句?

c++ constructor design-patterns declaration

16
推荐指数
2
解决办法
316
查看次数

标签 统计

c++ ×2

constructor ×1

declaration ×1

design-patterns ×1

mfc ×1

temporary ×1