小编Cla*_*bel的帖子

接口的虚拟析构函数

接口是否需要虚拟析构函数,或者是自动生成的一个?例如,以下两个代码段中哪一个最好,为什么?请注意,这些是整个班级.没有其他方法,变量等.在Java中,这是一个"接口".

class Base
{
public:
    virtual void foo() = 0;
    virtual ~Base() {}
};
Run Code Online (Sandbox Code Playgroud)

要么...

class Base
{
public:
    virtual void foo() = 0;
    ~Base() {} // This line can be omitted, but included for clarity.
};
Run Code Online (Sandbox Code Playgroud)

编辑由于"不是我想要的"答案:

确切地说,每条路线的后果是什么.请不要给出模糊的答案,例如"它不会被破坏".请告诉我到底会发生什么.我有点装配书呆子.

编辑2:

我很清楚,"虚拟"标签意味着如果通过指向派生的指针删除析构函数将不会被调用,但(我认为)这个问题最终归结为"省略该析构函数是否安全,因为它是真是微不足道?"

编辑3:

我的第二次编辑只是完全错误和虚假信息.请阅读实际聪明人的评论以获取更多信息.

c++ polymorphism

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

在Haskell中执行系统命令

我怎么能执行像cp somefile somedestinationHaskell 这样的系统命令?

有点像os.Exec.

haskell system process

9
推荐指数
2
解决办法
5802
查看次数

使用Template Haskell在编译时评估函数

我正在编写一个简单的HashString类,它只是一个字符串及其哈希:

data HashString = HashString Int    -- ^ hash
                             T.Text -- ^ string!
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试在编译时使用以下内容生成这些:

$(hString "hello, world") :: HashString
Run Code Online (Sandbox Code Playgroud)

我想要哈希,文本打包在编译时发生.我该怎么做呢?

这是我到目前为止所尝试的,但我不确定它是否正确,我也不确定它是否在编译时完成了所有工作:

hString :: String -> Q Exp
hString s = [| HashString (hash $ T.pack s) (T.pack s) |]
Run Code Online (Sandbox Code Playgroud)

haskell template-haskell

9
推荐指数
1
解决办法
1181
查看次数

在elisp中查找shell命令的退出代码

我使用shell调用shell命令shell-command-to-string.但是,我不仅需要它的输出,还需要命令的退出代码.

我怎么得到这个?

emacs elisp

9
推荐指数
1
解决办法
1305
查看次数

如何使文件自我更新(Native C++)

我正在使用Microsoft Visual Studio 2008和Windows目标部署.我如何使文件"自我更新"?我已经将"通过网络传输"部分关闭了,但是如何使可执行文件自行编写?

基本上,我想为包含自动更新程序的目录编写自动更新程序,并且更新程序需要更新目录中的所有内容.

也许在文件锁被释放之前将更改挂起到文件的方法可行.如果我这样做的话,我可能会用热补丁跟进.

c++ windows native

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

"变量跟踪"正在吃我的编译时间!

我有一个自动生成的文件,看起来像这样......

static void do_SomeFunc1(void* parameter)
{
    // Do stuff.
}

// Continues on for another 4000 functions...

void dispatch(int id, void* parameter)
{
    switch(id)
    {
        case ::SomeClass1::id: return do_SomeFunc1(parameter);
        case ::SomeClass2::id: return do_SomeFunc2(parameter);
        // This continues for the next 4000 cases...
    }
}
Run Code Online (Sandbox Code Playgroud)

当我像这样构建它时,构建时间是巨大的.如果我使用我的脚本将所有函数自动内联到各自的情况中,则构建时间减少一半.GCC 4.5.0表示当我使用-ftime-report时,大约50%的构建时间被"变量跟踪"占用.这意味着什么?如何在保持从交换机中拔出功能的优越缓存局部性的同时加快编译速度?

编辑:有趣的是,构建时间仅在调试版本上爆炸,根据整个项目的以下分析信息(这不仅仅是有问题的文件,但仍然是一个很好的指标;有问题的文件需要花费最多的时间建立):

  • 调试:8分50秒
  • 发布:4分25秒

如果你很好奇,这里有一些示例do_func,删除了上下文.如您所见,我将问题定义简化为仅显示相关部分.如果您想知道,所有self-> func调用都是对boost :: signal的调用.

static void do_Match_Login(Registry* self, const uint8_t* parameters, uint16_t length)
{
    const uint8_t* paramPtr = parameters;

    std::string p0 = extract_string(parameters, &paramPtr, length);
    std::string p1 = extract_string(parameters, &paramPtr, length); …
Run Code Online (Sandbox Code Playgroud)

c++ optimization gcc build-time

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

获取股票的价格历史

是否有任何简单的HTTP API可以让我在特定日期和时间获得符号(例如GOOG)的股票价格?

就像是...

http://somewebsite.com/?
    symbol=GOOG&
    year=2010&
    month=7&
    day=30&
    hour=4&
    minute=00
Run Code Online (Sandbox Code Playgroud)

给出484.85美元的回复

我希望有一个haskell函数的最终结果,其类型签名看起来像......

getQuote :: Symbol -> Date -> Time -> Price
Run Code Online (Sandbox Code Playgroud)

stocks http

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

Python中字节对象的项目赋值

GAHH,代码不工作确实是错误的代码!

in RemoveRETNs toOutput [currentLoc - 0x00400000] = b'\ xCC'TypeError:'bytes'对象不支持项目赋值

我怎样才能解决这个问题:

inputFile = 'original.exe'
outputFile = 'output.txt'
patchedFile = 'original_patched.exe'

def GetFileContents(filename):
    f = open(filename, 'rb')
    fileContents = f.read()
    f.close()

    return fileContents

def FindAll(fileContents, strToFind):
    found = []

    lastOffset = -1

    while True:
        lastOffset += 1
        lastOffset = fileContents.find(b'\xC3\xCC\xCC\xCC\xCC', lastOffset)

        if lastOffset != -1:
            found.append(lastOffset)
        else:
            break

    return found

def FixOffsets(offsetList):
    for current in range(0, len(offsetList)):
        offsetList[current] += 0x00400000
    return offsetList

def AbsentFromList(toFind, theList):
    for i in theList:
        if i …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

条件typedef

如果我有一点点代码......

template <typename _T>
class Foo
{
public:
    typedef const T& ParamType;
    void DoStuff(ParamType thingy);
};
Run Code Online (Sandbox Code Playgroud)

如果这可能是非最佳的sizeof(_T) <= sizeof(_T*).

因此,我希望有条件typedef.如果大小_T小于或等于指针的大小,则只需将其传递给值.否则,通过const引用传递它.这可能吗?我听到所有这些关于模板完成图案的东西,但这让我感到很伤心.

c++ templates

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

模板类,功能专业化

我想要一个看起来像我下面的模板类.然后,我想要一个带有模板特化的函数,具体取决于CLASS模板参数.我该如何工作?我意识到我提供的代码在很多层面都是错误的,但它只是为了说明这个概念.

template <typename _T, size_t num>
class Foo
{
    // If num == 1, I want to call this function...
    void Func<_T, 1>()
    {
        printf("Hi!");
    }

    // Otherwise, I want to call this version.
    void Func<_T, num>()
    {
        printf("Hello world!");
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ templates

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