gpt4 book ai didi

c++ - Cpp 运算符 = 2 个类之间

转载 作者:行者123 更新时间:2023-11-28 02:56:52 25 4
gpt4 key购买 nike

我在 VS2010 中遇到了一个令人惊讶的问题。

这是我的 main.cpp 的 header.h

class A;
class B;

class A
{
public:
double x,y;
A();
~A();
A(const A &obj);
A(const B &obj);
A& operator=(const A &obj);
};

class B
{
public:
double x,y;
B();
~B();
B(const B &obj);
B& operator=(const B &obj);
};

main.cpp 包含方法声明和:

#include "header.h"
#include <iostream>

int main() {
A t;
B u;
A a(u);
t=u;
return 0;
}

如你所见,要做

A a(u);

我不得不添加这个方法

A(const B &obj);

但是为了

t=u;

它使用

A& operator=(const A &obj);

为什么我没有收到错误消息?

最佳答案

如果你想避免这种情况,你应该将你的“A from B”构造函数标记为explicit:

explicit A(const B &obj);

编译器将使用任何未标记为显式的构造函数进行隐式转换。

关于c++ - Cpp 运算符 = 2 个类之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21774651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com