发生奇怪的课堂演员

时间:2019-07-23 22:12:10

标签: c++ class casting

我收到了要检查的代码,但我不明白为什么要进行类强制转换。给出以下伪代码:

class A {

    int a;
    void dummy() {
        std::cout << "wewe";
    };
};

class B {

    int a;
    void dummy() {
        std::cout << "wewe";
    };
};


A strangeCast() {
    return B();
}

在Linux上的VSCode上,此项目的构建没有错误。

我检查了这两个类之间是否存在任何关系:没有教育意义,没有重载equal运算符,没有定义强制转换。

当我尝试在Windows上的Visual Studio Community 2019中进行操作时,它告诉我未定义类转换(就像我期望的那样)。

您认为我忽略了以上任何一种关系,还是存在任何其他实现这种关系的方式?

编辑:我知道那不是一个好代码,它有错误,但是由于它听起来很奇怪,以至于没有错误/警告就可以编译,所以我只是想知道是否有我不知道的东西。

1 个答案:

答案 0 :(得分:2)

  

发生奇怪的类转换

没有演员表。强制转换是明确转化。您要显示的是隐式转换。

  

或任何其他方式可以做到这一点?

程序格式错误。唯一可能的编译方法是所用编译器的语言扩展。无论如何,如果没有诊断消息,则表明编译器不符合该标准。