相关疑难解决方法(0)

类中的内联函数成员

我知道当函数定义对于性能来说很小并且节省编译时间时,将函数(正常函数而不是类中的方法)声明为内联是一种很好的做法.但是如何在类中内联方法我不理解类内部方法的概念?如何定义它们以及它们如何工作.

c++ methods class

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

添加/删除函数静态变量会破坏二进制兼容性吗?

我必须维护我正在处理的这个C++库的二进制兼容性.

目前,我有这些方面的东西

class Foo
{
    void Bar()
    {
        static bool flag = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

将删除flag破坏二进制兼容性Foo

除了我的编译器目前是VC7.1如果该事项.

c++

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

我可以内联使用静态变量的函数吗?

我有这个代码:

// my.h

#ifndef MY_HEADER
#define MY_HEADER

int create_uid();

#endif
Run Code Online (Sandbox Code Playgroud)
// my.cpp

#include "my.h"

static int _next_uid = 0;

int create_uid()
{
    return _next_uid++;
}
Run Code Online (Sandbox Code Playgroud)

我想内联create_uid(),同时保持_next_uid变量对程序全局,以便变量是唯一的。

我的问题是:

  1. 我可以这样做吗?
  2. inlinerequire 语句_next_uid在编译单元之外是否可见?

注意:似乎并没有清楚地回答这些问题。

c++ static-variables inline-functions

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

C++ 单例延迟初始化实现和链接似乎冲突

C++ 单例设计模式我遇到这个问题并了解到在 C++ 中有两种实现单例模式的方法。

1)在堆中分配单个实例并在instance()调用中返回它

2)在instance()调用中返回一个静态实例,这也称为延迟初始化实现。

但我认为第二个,即延迟初始化实现,是错误的,原因如下。从instance()调用返回的静态对象具有内部链接,并且在不同的翻译单元中具有唯一的副本。因此,如果用户修改单例,它不会反映在任何其他翻译单元中。

但有很多说法表明第二种实现是正确的,我是否遗漏了什么?

c++ singleton linkage

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