C++ 中的转换运算符

2024-04-15

请帮助我了解 C++ 中的转换运算符到底是如何工作的。 我在这里有一个简单的例子,我试图理解它,尽管编译器实际上是如何进行转换的并不是很清楚。

class Example{
public:
    Example();
    Example(int val);
    operator unsigned int();
    ~Example(){}
private:
    int itsVal;
};

Example::Example():itsVal(0){}

Example::Example(int val):itsVal(val){}

Example::operator unsigned int (){
    return (itsVal);
}

int main(){
    int theInt = 5;
    Example exObject = theInt; // here 
    Example ctr(5);
    int theInt1 = ctr; // here
    return 0;
}

您可以使用调试器遍历该代码(和/或在每个构造函数和运算符上放置断点),以查看哪些行调用了哪些构造函数和运算符。

因为您没有显式定义它们,所以编译器还为您的类创建了一个隐藏/默认的复制构造函数和赋值运算符。如果您想使用调试器查看它们在何处/何时被调用,您可以显式定义它们(如下所示)。

Example::Example(const Example& rhs)
: itsVal(rhs.itsVal)
{}

Example& operator=(const Example& rhs)
{
    if (this != &rhs)
    {
        this->itsVal = rhs.itsVal;
    }
    return *this;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的转换运算符 的相关文章

  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • std::bind 重载解析

    下面的代码工作正常 include
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens

随机推荐

  • 如何将逻辑回归模型获得的系数映射到pyspark中的特征名称

    我使用 databricks 列出的管道流构建了一个逻辑回归模型 https docs databricks com spark latest mllib binary classification mllib pipelines html
  • 使用 Plotly 渲染 MATLAB 面片 Fig2plotly()

    问题 当尝试导出使用patchMATLAB 中的命令为fig2plotly 最终输出缺少指定的面部颜色 也许演示会有所帮助 采用以下顶点和面来定义立方体 摘自 MATLAB 文档 vert 0 0 0 1 0 0 1 1 0 0 1 0 0
  • C++中如何检查数据类型?

    我对 C 相当陌生 我主要使用 python 我正在尝试检查存储在我正在处理的对象中的值的变量类型 我记得Python中有一个命令isinstance我可以使用它作为运行某些命令的条件 例如如果下一个值是字符串 则执行 A 如果是 int
  • Gradle 没有选择 Cucumber-jvm

    我正在尝试从 Gradle 运行 Cucumber jvm 但是 无论我做什么 我都无法让这些功能实际运行 当其他 JUnit 测试运行时 它们总是被跳过 我的特点在src test resources我有一个 JUnit 测试src te
  • Windows Phone 8 的内存使用限制

    Windows Phone 8 应用程序的应用程序内存使用限制是多少 我需要三种不同可用设备的内存限制 如 720p WXVGA 等 WP8 内存上限的 zen 具有三个方面 默认基线 150MB 扩展内存 180MB 和低内存设备选择退出
  • 空值并不唯一

    我在 postgres 上有这样的行 name address college john rome john rome max tokyo 我创建一个这样的表 create test name varchar 10 address varc
  • 如何将 Chrome 扩展挂钩到网络浏览器流量

    我正在尝试编写一个 chrome 扩展来拦截网络流量并修改数据 如果有人能准确地告诉我应该使用哪个 API 以及在哪里可以找到文档 我将不胜感激 利用网络请求 https developer chrome com extensions we
  • 使用 RTTI 从类中获取常量字段

    我可以枚举类中的常量吗 我努力了 MyClass class const c1 c1 c2 c2 c3 c3 end procedure GetConst var ctx TRttiContext objType TRttiType fie
  • 使用 XmlWriter 执行 XmlSerialization 时如何添加命名空间?

    我将 XmlWriter 与 Xml 序列化结合使用 我能够很好地输出 XML 但如何在 XmlWriter 中包含 xmlns 属性似乎让我无法理解 为了编写文档的开头 我使用以下命令 Writer WriteStartDocument
  • 如果 1 行满足条件,则排除 ID 的所有行

    我正在尝试从联系人表中选择某些客户 如果他们没有列出监护人 ClientId ContactId Guardian 123 1 Y 123 2 N 123 3 N 456 4 N 456 5 N 456 6 N 期望的输出 ClientId
  • linq-to-sql 或 linq 在什么时候向数据库发送请求

    我想让我的查询更好 但一直无法找到当查询发送到数据库时列出的资源 DBContext db new DBContext Order order from o in db where o OrderID qwerty asdf xcvb se
  • xcode 4.2 ios5 协同设计失败,退出代码 1

    我在谷歌上搜索了适合我的解决方案 我尝试了很多不同的建议 但似乎没有任何效果 在使用 ios5 的 xcode 4 2 中 当我尝试运行该项目时 出现以下错误 CodeSign Users matt Library Developer Xc
  • MySQL中具有相同ID的行的字段连接

    我有以下查询 SELECT mutations id genes loc FROM mutations genes where mutations id genes id 并输出 SL2 50ch02 51014904 intergenic
  • 如何在 Angular-Masonry 中触发重新加载?

    我使用 Masonry 在我的 AngularJS 应用程序中工作角砌体 https github com passy angular masonry指令 但我希望能够调用控制器中的函数或方法来触发容器中项目的重新加载 我在源代码 第 10
  • Angular 6 嵌套 FormGroup 模板验证

    我的表单组结构如下所示 order component ts this orderForm this formBuilder group customer this formBuilder group name Validators req
  • 没有任何成员的界面 - 不好的做法? [复制]

    这个问题在这里已经有答案了 可能的重复 标记接口的目的是什么 https stackoverflow com questions 1023068 what is the purpose of a marker interface 创建一个完
  • IIS,拒绝访问静态文件;这个例子有什么问题吗?

    我试图获取默认情况下允许访问的最简单示例 除非通过 IIS 中特定目录的身份验证 否则拒绝访问 当你谷歌周围时 每个人都说这很简单
  • 在中等信任度下以编程方式修改配置部分

    我的应用程序中有一个自定义 ConfigurationSection public class SettingsSection ConfigurationSection ConfigurationProperty Setting publi
  • 以特定方式排列数据框

    提前抱歉 标题不好 但我真的不知道如何简洁地表达它 我正在使用一个数据框 其中的项目可以属于 4 个类别中的任何一个 而不限于 1 个类别 这是我正在使用的虚拟矩阵的示例 ID lt 1 7 A lt c 1 0 0 1 1 0 0 B l
  • C++ 中的转换运算符

    请帮助我了解 C 中的转换运算符到底是如何工作的 我在这里有一个简单的例子 我试图理解它 尽管编译器实际上是如何进行转换的并不是很清楚 class Example public Example Example int val operato