我可以对字段和构造函数参数使用相同的名称吗?

2024-04-13


class C {
  T a;
public:
  C(T a): a(a) {;}
};

合法吗?


是的,它是合法的并且适用于所有平台。 它将正确地将您的成员变量 a 初始化为传入的值 a。

一些更干净的人认为以不同的方式命名它们,但并非全部。我个人实际上经常使用它:)

具有相同变量名的初始化列表是有效的,因为初始化列表中初始化项的语法如下:

()

您可以通过创建一个简单的程序来验证我上面写的内容:(它不会编译)

class  A
{

   A(int a)
   : a(5)//<--- try to initialize a non member variable to 5
   {
   }
};

您将收到类似以下的编译错误:A 没有名为“a”的字段。


附注:

你的原因之一可能不想要使用与参数名称相同的成员名称会更容易出现以下情况:

class  A
{

   A(int myVarriable)
   : myVariable(myVariable)//<--- Bug, there was a typo in the parameter name, myVariable will never be initialized properly
   {
   }
   int myVariable;
};

附注(2):

你的原因之一may want使用与参数名称相同的成员名称可以减少出现以下情况的可能性:

class  A
{

   A(int myVariable_)
   {
     //<-- do something with _myVariable, oops _myVariable wasn't initialized yet
     ...
     _myVariable = myVariable_;
   }
   int _myVariable;
};

这种情况也可能发生在大型初始化列表中,并且您在初始化列表中初始化 _myVariable 之前使用它。

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

我可以对字段和构造函数参数使用相同的名称吗? 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 使用 Sikuli 进行拖放

    我在使用 Sikuli 拖放时遇到问题 我想在任何其他方向 上 下 左 右 拖动某些东西固定数量的像素 这看起来应该有效 t find 1325249963143 png dragDrop t t x 100 t y 100 Sikuli
  • 在 Eclipse 中导入动态 Web 项目?

    我使用 eclipse 3 6 2 Helios 和 tomcat 7 和 myfaces 1 2 10 当我想导入动态 Web 项目时遇到问题 我在工作区中导入项目并执行配置并设置 jar 文件 但是当我在 tomcat 中运行该项目时
  • 我希望我的字段只接​​受整数,并且我已将该字段保留在所需的验证中? [复制]

    这个问题在这里已经有答案了 我已经完成了我的完整项目 但它缺少这一要求 我自己无法在我的项目中解决这个问题 你会使用CodeIgniter吗表单验证 http ellislab com codeigniter user guide libr
  • 为什么 Service Worker 只能通过 HTTPS 工作?

    根据最初的提案 关于 更喜欢安全来源以获得强大的新功能 http www chromium org Home chromium security prefer secure origins for powerful new features
  • Android Studio 与 ndk 和 googletest

    我正在尝试设置我的 CI 服务器以与 Android Studio 一起使用 我希望通过新的 UI 运行 NDK 的单元测试 我正在使用 GoogleTest 当我从命令行构建时 gcov 可以完美地实现代码覆盖率 我遇到的问题是 UI 中
  • 当名称的开头保持相同而结尾不同时,将 CSS 样式应用于 ID 元素

    在 WordPress 中 博客文章的标题通常使用 ID 元素进行格式化 该 ID 元素由永远不会变化的前缀 例如 post 组成 后跟 WordPress 生成的可变数字后缀 对应于唯一的连续帖子编号 每个帖子 在 WordPress 主
  • 根据其中一个字段对元组进行排序

    我的问题与下面的问题相同 但答案很模糊 我不明白如何进行 将 List 从最高到最低排序 https stackoverflow com questions 4017728 sort a listtuple from highest to
  • 将 JSON 数据的 NSString 转换为 NSArray [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个N
  • 多线程和CPU缓存

    我正在使用多个线程在 C 中实现图像过滤操作 并使其尽可能优化 但我有一个问题 如果线程 0 访问内存 并且同时线程 1 访问同一内存 它会从缓存中获取它吗 这个问题源于这两个线程可能运行在 CPU 的两个不同内核中的可能性 因此 另一种说
  • 假设没有非时间指令,“xchg”是否包含“mfence”?

    我已经看过了这个答案 https stackoverflow com a 50279772 391161 and 这个答案 https stackoverflow com a 19099164 391161 但似乎都没有清楚明确地说明等价或
  • Intellij IDEA:未命中断点,并显示为灰色

    在 Mac OS X 上运行 JDK 1 7 时 我的项目上的断点突然不起作用 并且显示为灰色 他们今天早些时候在工作 所以不确定我做了什么导致了这种情况 我正在使用 Intellij 13 1 3 为什么断点会像这样停止工作 天哪 我刚刚
  • php数组计数与动态结果

    我正在尝试计算从脚本返回的数组的结果 有两种情况我可以找回选项a是 Array Id gt 1779 SupplierId gt 1809 SupplierName gt cccccc 和第二个选项 ib Array 0 gt Array
  • 在delphi中禁用窗体大小调整

    有什么方法可以阻止用户调整表单大小吗 目前我正在使用 当表单大小改变时 MainForm Height 761 MainForm Width 777 但这看起来很可怕 因为当用户尝试更改表单大小时它会闪烁 固定尺寸很简单 你有两个选择 De
  • Cassandra Nodetool URISyntaxException:“索引 7 处的 IPv6 地址格式错误”

    Cassandra nodetool 更新 OpenJDK 后抛出错误 nodetool status nodetool Failed to connect to 127 0 0 1 7199 URISyntaxException Malf
  • 什么是托管代码和非托管代码? [复制]

    这个问题在这里已经有答案了 我发现有人说托管代码和非托管代码 有什么不同 它仅适用于 Net吗 你可以阅读这篇维基百科文章 托管代码 http en wikipedia org wiki Managed code 基本上托管代码是一个微软术
  • Box2D - b2body GetUserData 始终返回 null

    我正在尝试根据 box2d 中的 b2body 调整精灵的位置和旋转 创建主体后 我将 userData 属性设置为保存精灵和位置等的主体对象的属性 问题是在勾选方法 b gt GetUserData 中永远不会检索我放入其中的对象 你能看
  • GPS 对比加速度计计算距离

    我正在尝试实现一个健身应用程序 可以在Android 中跟踪跑步速度和跑步距离 看起来我可以使用 GPS 或加速度计来计算这些信息 由于跑步者可能会将手机放在手里 放在肩膀上或放在口袋里 所以我的第一直觉是使用 GPS 获取位置并计算跑步速
  • 如何将 SSH 密钥与 Jenkins 工作流插件结合使用

    有一个由以下执行的常规脚本Jenkins 工作流插件 https github com jenkinsci workflow plugin As 有记录的 https github com jenkinsci workflow plugin
  • 如何让 SWIG 在 C# 中处理 utf8 字符串?

    我正在编写一个可移植的 C 库 它与其他语言 java C python 绑定 我在以下人员的帮助下进行这些绑定SWIG http www swig org 我有一个用 C 编写的类 class MyClass public const c
  • 我可以对字段和构造函数参数使用相同的名称吗?

    class C T a public C T a a a 合法吗 是的 它是合法的并且适用于所有平台 它将正确地将您的成员变量 a 初始化为传入的值 a 一些更干净的人认为以不同的方式命名它们 但并非全部 我个人实际上经常使用它 具有相同变