小编Joh*_*ohy的帖子

在将 constexpr 添加到语言后,将变量声明为 const 是多余的吗?

正如关键字constexpr所暗示的const,它也可以在编译时计算,这是否意味着现在将变量声明为const没有意义,我们应该始终将它们声明为constexpr

c++ constants constexpr c++11

15
推荐指数
3
解决办法
279
查看次数

为什么互斥锁 (std::mutex) 很重?

在这个网站上,我经常在其他论坛上读到诸如“互斥量很重,最好使用其他东西”之类的短语。但我真的找不到解释为什么它很重?此外,如果我们在 C++20 之前谈论标准 C++11,我们基本上只有 std::mutex,与锁或 condition_variable 一起使用,以实现线程安全,我希望 std 中的某些东西非常有效,尤其是如果它是执行某些任务的唯一工具(在 C++20 之前),则在这种情况下是线程安全的。那么为什么互斥体,尤其是 std::mutex 很重呢?我们作为 C++ 开发人员应该使用什么?来自提升的东西?

c++ multithreading boost mutex c++11

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

将 make_shared 与 emplace_back 和 push_back 一起使用 - 有什么区别吗?

some_vector.push_back(make_shared<ClassName>());
some_vector.emplace_back(make_shared<ClassName>());
Run Code Online (Sandbox Code Playgroud)

我想检查一下我的理解是否正确,对于make_shared返回对象的所有其他函数,这两个调用是相同的。这里make_shared将创建一个新的shared_ptr,然后这个指针都将在被转移到容器中push_backemplace_back。这是正确的,还是会有一些区别?

c++ vector make-shared c++11 c++17

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

是否可以在 COM 对象之间传递 char*

我需要修改在 Delphi 和 C++ 上编写并使用 COM 的应用程序。而且我经常看到 COM 包装器总是使用 WideString 和 BSTR,即使最终使用的 dll 与普通的 char* 一起使用。那么没有unicode字符串就不可能在COM对象之间进行通信吗?非常感谢用于进一步阅读该主题的一些链接。

c++ delphi string com unicode

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