比如Qt可以用在下面吗? 在此示例中,所有权由 new-site 和parent共享,因为对 object 进行new的代码可以delete w ,并且W的析构函数会将其自身从parent列表中取出。 然而,如果w没有在新站点被删除,那么parent将在它的析构函数中删除它。 这是共享所有权的例子 ...
比如Qt可以用在下面吗? 在此示例中,所有权由 new-site 和parent共享,因为对 object 进行new的代码可以delete w ,并且W的析构函数会将其自身从parent列表中取出。 然而,如果w没有在新站点被删除,那么parent将在它的析构函数中删除它。 这是共享所有权的例子 ...
我是 c++ 的新手,我正在阅读核心指南,我遇到了这个: P.1:直接在代码中表达想法在这里,它说要使用像Month month() const;这样的东西。 而不是int month(); 所以我有两个问题,为什么在 function 的末尾有一个 const ,它有什么作用? 以及如何定义月 ...
我有一个像这样的 function:void column(const std::string &value) { ... } void column(float value) { ... } template <class... TColumns> void row(co ...
在第 N 次向原始指针添加注释"// not null"后,我再次想知道not_null模板发生了什么。 C++ 核心指南是在很久以前创建的,一些内容已经纳入标准,例如std::span (有些像string_view和std::array起源于核心指南本身,但有时会混淆)。 鉴于它相对简单,为 ...
免责声明:这个问题是关于防止意外的命名冲突,并确保以下代码无法编译/链接。 [编辑] 实际上,我很高兴有一些东西可以阻止它编译/链接,或者一些可以解决这个问题的东西,比如匿名名称空间。 但是匿名命名空间不应该在标头内 go 。 这里发生的是 ctor S::S 有两个内联定义,因此允许 link ...
我又糊涂了:( 我看过这个讨论: 在编译时检测异常是否被禁用我是尝试使用 GSL 的新手。 我已将 GSL 文件夹复制到我的 PC,并在我的stdafx.h文件中添加了#include 。 但是gsl:narrow命令没有公开。 然后我看到它指的是__cpp_exceptions宏/令牌。 我试 ...
赏金将在 4 天后到期。 此问题的答案有资格获得+100声望奖励。 Lorah Attkins想引起更多人对这个问 ...
根据核心指南,C++ 中的输出参数通常被认为是代码异味。 然而,我们在正则表达式库中有这样的函数 template< class BidirIt, class Alloc, class CharT, class Traits > bool regex_match( B ...
我正在使用 clang-tidy 分析代码库,并看到一个我不理解的警告。 警告由以下代码行调用:void fun(const QString& bar) { const char* c_format = bar.toStdString().c_str(); expand_s ...
C++ 核心指南建议使用gsl::not_null类型。 如 I.12 中所述:将不得为 null 的指针声明为not_null : 帮助避免取消引用 nullptr 错误。 通过避免对 nullptr 进行冗余检查来提高性能。 ... 通过在源代码中说明意图,实现者和工具可以提供更好的诊断, ...
接口(C# 术语)是指没有数据成员的抽象 class。 因此,这样的 class 只指定了子类必须实现的契约(一组方法)。 我的问题是:如何在现代 C++ 中正确实现这样的 class? C++ 核心指南 [1] 鼓励使用没有数据成员的抽象 class 作为接口 [I.25 和 C.121]。 ...
我的类中有一个私有静态向量,它保留一个指向从它创建的所有对象的指针。 这是必要的,因为每个对象都需要访问来自所有其他对象的信息来执行一些计算: // Header file: class Example { public: Example(); private: static std ...
我试图了解如何使用gsl::narrow_cast而不是static_cast 。 我在 stackoverflow 上找到了一个函数,它有一个字符串作为参数,如果所有字符都是 ASCII(前 127 个字符),则返回 true。 我已经在我的代码中实现了这个函数,我注意到 Visual Stu ...
动机 C++ 核心指南建议在“类层次导航不可避免”时使用dynamic_cast 。 这会触发 clang-tidy 抛出以下错误: Do not use static_cast to downcast from a base to a derived class; use dynamic_cas ...
我正在尝试遵循 Cpp 核心指南并在适当的情况下使用 GSL。 特别是,我想将Expects和Ensures用于前置条件和后置条件,以及span和narrow_cast ,但错误处理并不可靠,并且不提供任何诊断。 当遇到错误时,GSL 只是调用terminate ,让测试人员不知道是什么导致了终止。 ...
我最近正在阅读这篇文章,其中指出: 不要假设复杂的代码一定比简单的代码快。 代码复制如下: 例子,不错// clear expression of intent, fast execution vector<uint8_t> v(100000); for (auto& c ...
我一直在阅读CppCoreGuidelines F.15 ,但我不理解参数传递表中的以下句子: “便宜” ≈ 少量热 int 副本 “中等成本”≈memcpy hot/contiguous ~1KB 且无分配 “热 int 副本”是什么意思? ...
当我使用以下代码时,我收到警告(来自应用 cppcoreguideline)。 代码: 警告: 当我搜索并访问此链接https://releases.llvm.org/8.0.1/tools/clang/tools/extra/docs/clang-tidy/checks/cppcoreguidel ...
msvc 的 cpp 核心指南代码分析器告诉我警告 C26472 不要使用 static_cast 进行算术转换。 使用大括号初始化、gsl::narrow_cast 或 gsl::narrow (type.1)。 对于这个片段 为什么我不应该在这里使用 static_cast ? 此外,使用大 ...
这是错误和代码一瞥 我的一门课程要求我使用警告级别 4 并将警告视为 Visual Studio 中的错误。 除此之外,我们还需要激活 Cpp Core Guidelines。 然而,自从我激活这些选项后,我一直被警告错误 C26493 所困扰(不要使用 C 风格的演员表)。 显然,他们认为我的“断 ...