问题标签 [conversion-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
13708 浏览

c++ - 运算符 = 用 C++ 中的常量变量重载

我想知道你们是否可以帮助我。

这是我的.h:

和我的主要:

我想做 operator= 功能。谁能帮我?注意 Doctor 上的 const 成员。

************编辑:********* 我的主要问题是我希望另一个类有一个属性,它是一个医生,就像一个病人有一个医生。但我希望能够改变我的医生。就像我正在看医生 A 但我想看医生 B。这将在我的其他班级 (Pacient) 中使用 setDoctor 函数来完成。如果是我编写代码,我会这样说:

然后更改指针。但是,我使用的是一位老师制作的基本代码,它的类定义如下:

但我认为这是不可能的,因为在 Patient 类中使用 setDoctor() 时,我要么制作副本,要么更改变量本身。第一个没有任何区别,第二个由于 const 是不可能的。我对吗?

0 投票
5 回答
1568 浏览

c++ - Swig C++ Lua Pass 类通过引用

我不知道为什么我很难处理这个。我想做的就是:

我遇到的问题是,在 swigging 这段代码之后,我无法弄清楚如何使 lua 脚本运行良好。

我得到的错误是“重载函数 'new_Foo2' 的参数错误”:可能的 c/c++ 原型是: foo2() foo2(foo const &)

如果我尝试使用 do f2 = f,也会发生同样的事情。据我了解,所有内容都存储为指针,因此我确实尝试添加一个额外的构造函数,该构造函数将指针指向 foo 但无济于事。

0 投票
7 回答
49050 浏览

c++ - 转换运算符如何在 C++ 中工作?

考虑这个简单的例子:

转换运算符如何在 C++ 中工作?(即)编译器何时尝试替换转换运算符之后定义的类型?

0 投票
4 回答
55728 浏览

c++ - C++ 中的转换运算符

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

0 投票
2 回答
15043 浏览

c++ - 转换构造函数与转换运算符:优先级

在这里阅读一些关于转换运算符和构造函数的问题让我想到了它们之间的交互,即当有一个“模棱两可”的调用时。考虑以下代码:

上面的代码显示“调用 A 的转换运算符”,这意味着调用转换运算符而不是构造函数。如果您从 中删除/注释掉operator B()代码A,编译器会很高兴地转而使用构造函数(代码没有其他更改)。

我的问题是:

  1. 由于编译器不认为B b = A();这是一个模棱两可的调用,所以这里必须有某种优先级。这个优先级究竟是在哪里建立的?(来自 C++ 标准的参考/引用将不胜感激)
  2. 从面向对象的哲学角度来看,这是代码应该表现的方式吗?谁知道更多关于一个A对象应该如何成为一个B对象,A或者B?根据 C++,答案是A——在面向对象的实践中是否有任何东西表明应该是这种情况?就我个人而言,无论哪种方式都有意义,所以我很想知道是如何做出选择的。

提前致谢

0 投票
2 回答
686 浏览

c++ - 在 C++ 中调用母类 operator= 的常用方法?

假设我有一个继承自 Animal 类的 Dog 类,您可能想在 Dog::operator= 中插入对 Animal::operator= 的调用。

什么是最易读/最常用的写法?

我想我认识这两个...

0 投票
5 回答
1686 浏览

c++ - 显式复制构造函数或按值隐式参数

我最近读到(不幸的是忘记了在哪里),写 operator= 的最佳方法是这样的:

而不是这个:

这个想法是,如果使用右值调用 operator=,第一个版本可以优化副本的构造。所以当用右值调用时,第一个版本更快,当用左值调用时,两者是等价的。

我很好奇其他人对此有何看法?人们会因为缺乏明确性而避免使用第一个版本吗?我是否正确,第一个版本可以更好并且永远不会更糟?

0 投票
5 回答
1307 浏览

c++ - C++:重载运算符=

好的,所以我有一个具有“弱类型”IE 的类,它可以存储许多不同的类型,定义为:

我想像这样重载赋值运算符:

这样我就可以做到这一点:

但是当我这样做时,我得到:

在任务中。

我也试过:

我得到:

有什么我想念的吗?还是根本不可能通过重载来进行这样的转换operator=

0 投票
4 回答
8206 浏览

c++ - 转换运算符作为独立函数

为什么 C++ 要求用户定义的转换运算符只能是非静态成员?为什么不允许像其他一元运算符一样使用独立函数?像这样的东西:

0 投票
3 回答
3112 浏览

c++ - STL:如何重载 operator= for?

有一个简单的例子:

我需要知道的是如何重载 operator = 以便我可以像这样进行赋值:

我刚刚尝试了很多方法,但编译器总是返回错误......

是否有任何选项可以使此代码在不更改的情况下工作?我可以写一些额外的行,但不能编辑或删除现有的行。泰。


好的我明白了。我会用另一种方式问你.. 有没有什么选项可以让这段代码在不改变的情况下工作?我可以写一些额外的行,但不能编辑或删除现有的行。泰。