小编Sid*_*Bob的帖子

我的$ Foo ATL解决方案中的($ Foo)PS项目是什么?

在MSVC中创建一个ATL项目似乎创建了一个而不是两个项目; 后者的名称与前者相同,但附加了PS名称.第二个项目的目的是什么?如何判断我是否需要它?

c++ com atl visual-studio

25
推荐指数
3
解决办法
3311
查看次数

Python:可以在类中调用静态方法而无需限定名称

这很烦人:

class MyClass:
    @staticmethod
    def foo():
        print "hi"

    @staticmethod
    def bar():
        MyClass.foo()
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作没有在通话中命名MyClass?即所以我可以foo()在最后一行说?

python namespaces class

24
推荐指数
1
解决办法
9582
查看次数

为什么c ++指针*与声明的变量关联,而不是类型?

为什么C++的设计使得在同一行上声明两个int*的正确方法是

int *x, *y;
Run Code Online (Sandbox Code Playgroud)

int* x,y;
Run Code Online (Sandbox Code Playgroud)

我知道有些人认为你应该避免使用任何形式并在自己的行上声明每个变量,但我对为什么做出这个语言决定感兴趣.

c++ pointers language-design declaration

21
推荐指数
2
解决办法
1558
查看次数

为什么默认赋值运算符不首先调用析构函数?

所以在下面的例子中,我们使class Foo替换为自己*this = Foo().我很高兴我只是测试了这个,因为事实证明,在这种情况下,旧的析构函数Foo不会被调用.我想这是因为默认赋值运算符只是使用memcpy...但是作为语言设计问题...为什么不让默认赋值运算符首先销毁已分配的对象以防止意外?

http://codepad.org/9WCo6yZ5

#include <iostream>
using namespace std;

class MustBeDestroyed //(for some reason not shown here)
{
public:
  int i;
  MustBeDestroyed(int i) : i(i) {}
  ~MustBeDestroyed() { cout << "destroyed contained class " << i << endl; }
};

class Foo
{
public:
  MustBeDestroyed x;
  Foo(int y) : x(y) {}
  void replace_myself(int y) { Foo f(y); *this=f; }
  void print() { cout << "This is outer/inner class " << x.i << …
Run Code Online (Sandbox Code Playgroud)

c++

13
推荐指数
2
解决办法
5067
查看次数

带有shared_ptr成员的c ++拷贝构造函数

来自cplusplus.com:

很少会遇到一个不包含原始指针的类,但默认的复制构造函数是不够的.例如,当您有一个引用计数对象时.boost :: shared_ptr <>就是一个例子.

有人可以详细说明吗?如果我们有一个包含a的类boost::shared_ptr,那么当类被构造复制时,不会构造复制 - 因此shared_ptr构造函数不会做正确的事情并增加引用计数吗?例如,下面的代码Inner正确复制- 为什么这不适用shared_ptr?:

#include <iostream>
using namespace std;

class Inner
{
public:
 Inner() { cout << "inner default constructed" << endl;}
 Inner(const Inner& other) { cout << "inner properly copied" << endl;}
};

class Outer
{
 Inner i;
};

int main() { Outer o; Outer p(o); return 0;}
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor shared-ptr

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

向下转换为浮动:保证溢出行为?

如果我试试这个

float f = (float)numeric_limits<double>::infinity();
Run Code Online (Sandbox Code Playgroud)

或者实际上,尝试将比浮动最大值更大的东西投射到浮点数上,我保证最终得到无穷大?

它适用于GCC,但它是一个标准吗?

c++ floating-point casting

10
推荐指数
2
解决办法
5365
查看次数

Pythonic方法有效地处理可变数量的返回参数

所以我有一个可以安静地或冗长地工作的功能.在安静模式下,它会产生输出.在详细模式下,它还将中间计算保存到列表中,尽管这样做本身需要额外的计算.

在你问之前,是的,这是一个已经确定的优化瓶颈,并且很少需要详细的输出,所以没关系.

所以问题是,有效处理可能会或可能不会返回第二个值的函数的最pythonic方法是什么?我怀疑pythonic方式会被命名为元组或字典输出,例如

def f(x,verbose=False):
    result = 0
    verbosity = []
    for _ in x:
        foo = # something quick to calculate
        result += foo
        if verbose:
            verbosity += # something slow to calculate based on foo
    return {"result":result, "verbosity":verbosity}
Run Code Online (Sandbox Code Playgroud)

但这需要在不需要时构建一个字典.

一些替代方案是:

# "verbose" changes syntax of return value, yuck!
return result if verbose else (result,verbosity)
Run Code Online (Sandbox Code Playgroud)

或使用可变参数

def f(x,verbosity=None):
    if verbosity:
        assert verbosity==[[]]
    result = 0
    for _ in x:
        foo = # something quick to calculate
        result += foo …
Run Code Online (Sandbox Code Playgroud)

python coding-style return-value calling-convention

10
推荐指数
1
解决办法
243
查看次数

当数据隐藏在对象内时如何使用intel prefetch pragma?

英特尔有助于提供预取编译指示; 例如

#pragma prefetch a
for(i=0; i<m; i++)
  a[i]=b[i]+1;
Run Code Online (Sandbox Code Playgroud)

将由a编译器确定预先获取一定数量的循环周期.

但是如果a不是一个数组而是一个[]被覆盖的类呢?如果operator[]一个简单的数组访问,可以预取仍然以这种方式使用?

(据推测这个问题也适用于此std::vectors).

c++ memory-management intel pragma prefetch

8
推荐指数
1
解决办法
1495
查看次数

什么是浮点推测以及它与编译器的浮点模型有何不同

英特尔C++编译器提供了两个用于控制浮点的选项:

-fp-speculation(快速/安全/严格/关闭)-fp-model(精确/快速/严格和源/双/扩展)

我想我明白了fp模型的作用.但是什么是fp-speculation以及它与fp模型有什么关系?我还没有找到解释这个的任何英特尔文档!

c++ floating-point intel

8
推荐指数
1
解决办法
1769
查看次数

Visual Lisp:如何在外部C++ DLL中调用函数

我有一个我编写的C++ DLL(本机,而不是.net),我想使用Visual Lisp的功能.任何人都可以指出一个如何做到这一点的例子,或者至少要阅读哪些文档?

c++ dll autocad autolisp

8
推荐指数
1
解决办法
2154
查看次数