C++——为什么我们应该在这个构造函数中使用显式?

2023-11-23

请参阅维基百科:策略模式(C++)

class Context
{
    private:
        StrategyInterface * strategy_;

    public:
        explicit Context(StrategyInterface *strategy):strategy_(strategy)
        {
        }

        void set_strategy(StrategyInterface *strategy)
        {
            strategy_ = strategy;
        }

        void execute() const
        {
            strategy_->execute();
        }
};

为什么对 Context 的构造函数使用显式是一个好习惯?

谢谢


因为通常使用它是一个好主意explicit除非你really想要允许隐式转换。因为你不太可能使用Context对象在你确实从隐式转换中获得任何东西的情况下,你最好这样做explicit.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++——为什么我们应该在这个构造函数中使用显式? 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • Elasticsearch,获取平均文档长度

    在elasticsearch中是否有更好的方法 除了发出匹配所有查询并手动平均所有返回文档的长度 来获取特定索引的平均文档长度 The size 映射字段 如果启用 应该免费为您提供每个文档的大小 将此与avg聚合应该能让你得到你想要的 就
  • 如何用常量值初始化 JavaScript 数组?

    如何使用常量值初始化 JavaScript 数组 例如 在 C 代码中我可以写 int array 1 2 3 JavaScript 中的等价物是什么 1 常规 var myCars new Array myCars 0 Saab myCa
  • 如何通过引用两个单元格自动命名电子表格?

    我刚刚编写完一个用于自动生成报告的漂亮宏 它运行良好 但我需要它根据两个单元格中的数据自动命名电子表格 本质上 该宏创建一个新的电子表格 将信息复制到其中 并创建每月所需的相关数据透视表 作为此过程的一部分 我创建了一个仪表板 用于生成报告
  • django admin 的有效用例?

    我想建立一个 django 网站 其中一组受信任的用户可以编辑他们的个人资料信息 让每个受信任的用户都通过 django 管理界面有意义吗 我只希望他们能够查看和编辑自己的信息 显然 这似乎不符合 django 人们定义 信任 的方式 尤其
  • 如何正确使用cin.peek()

    该函数应该读取一个分数并将其放入数组中 如果用户输入 0 该函数应该退出 我尝试使用 cin peek 函数来执行此操作 但执行始终进入 if 语句并且不允许用户退出 我应该如何正确编码 我愿意不使用 peek 我认为这是最简单的方法 Th
  • IIS 7 无效的应用程序路径,Win 7 [关闭]

    Closed 这个问题是无关 目前不接受答案 收到 无效的应用程序路径 错误 这是我已采取的步骤 右键单击网站的根文件夹 单击 添加虚拟目录 在打开的窗口中 将别名设置为子文件夹的名称 WS 使用浏览按钮导航并设置驱动器上物理文件夹的路径
  • 有没有办法在 Javascript 中正确地将两个 32 位整数相乘?

    有没有办法在 Javascript 中正确地将两个 32 位整数相乘 当我从 C 尝试使用long long我明白了 printf 0x llx d llx n 0x4d98ee96ULL 1812433253 0x4d98ee96ULL
  • scala代码在spark中抛出异常

    我是 Scala 和 Spark 的新手 今天我尝试编写一些代码 并让它在spark上运行 但出现了异常 这段代码在本地 scala 中工作 import org apache commons lang time StopWatch imp
  • 如何更改 uwp windows 10 中的包系列名称

    我想更改图中提到的密钥 当我更改证书文件时 它会更改为另一个临时密钥 并且发布者文件夹正在使用此密钥作为名称创建 但我希望它是一个有意义的名字 是否可以 如果有人知道 请帮助我 这些元素一起声明您的应用程序的身份 建立其所有包所属的 包系列
  • 严格标准错误

    功能parse users返回一个数组 我正在另一个函数中执行以下操作 return reset this gt parse users records 但我得到一个Strict Standards Only variables shoul
  • 为什么 jar 忽略我的清单?

    我尝试使用以下命令创建可执行 jar jar cvfm h jar Manifest mf Whatever1 class Whatever2 class 清单包含以下内容 Main Class Whatever1 但如果我尝试运行该罐子
  • 如何使用 v-for 使用 vue.js 渲染表格

    我有一个看起来像这样的数组 sales Year 2018 Month 01 Sale 512 Year 2018 Month 02 Sale 1025 Year 2017 Month 01 Sale 155 Year 2017 Month
  • CancellationTokenSource.CancelAfter() 是否泄漏?

    的发布异步定位包提示我使用ILSpy看看什么基于任务的异步模式 TAP 那里提供了扩展方法 其中一些我已经自己实现并在 VS2010 中使用 我偶然发现了 CancelAfter TimeSpan 方法用于CancellationToken
  • 将多组测量列(宽格式)重塑为单列(长格式)

    我有一个宽格式的数据框 在不同的日期范围内进行重复测量 在我的示例中 存在三个不同的时期 都有相应的值 例如 第一次测量 Value1 是在这段时间内测量的DateRange1Start to DateRange1End ID DateRa
  • 如何检查 dask 数据框是否为空

    有没有相当于 pandas 的 daskempty功能 我想检查 dask 数据框是否为空 但是df empty return AttributeError DataFrame object has no attribute empty D
  • 如何用js检测屏幕截图

    Not sure how they do it but hulu has found a way to detect if a screenshot is taken or if the screen record is on and se
  • C函数中的指针“未使用计算值”

    我编写了一个函数 可以按照请求的长度缩短字符串 单词的句子 我不希望句子的剪切恰好位于单个单词的中间 所以我向后跳 n 个字符 直到到达一个空格并在那里剪切句子字符串 我的问题并不是真正的问题 编译我的函数会发出一条警告 提示 警告 未使用
  • 在 svg 路径元素上添加类

    在我的项目中 我有一个 SVG 世界地图 其中包含具有不同 id 的不同路径和一类map path 对于每个国家 地区 单击 我想在每个路径上添加类 我的 HTML 是这样的
  • 消息队列的好策略?

    我目前正在设计一个应用程序 我最终希望将其迁移到 Windows Azure 然而 短期内 它将在我自己托管的服务器上运行 该应用程序涉及许多独立的 Web 应用程序 其中一些本质上是接收数据的 WCF 服务 一些是供用户管理数据的站点 此
  • C++——为什么我们应该在这个构造函数中使用显式?

    请参阅维基百科 策略模式 C class Context private StrategyInterface strategy public explicit Context StrategyInterface strategy strat