我收到了要检查的代码,但我不明白为什么要进行类强制转换。给出以下伪代码:
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中进行操作时,它告诉我未定义类转换(就像我期望的那样)。
您认为我忽略了以上任何一种关系,还是存在任何其他实现这种关系的方式?
编辑:我知道那不是一个好代码,它有错误,但是由于它听起来很奇怪,以至于没有错误/警告就可以编译,所以我只是想知道是否有我不知道的东西。
答案 0 :(得分:2)
发生奇怪的类转换
没有演员表。强制转换是明确转化。您要显示的是隐式转换。
或任何其他方式可以做到这一点?
程序格式错误。唯一可能的编译方法是所用编译器的语言扩展。无论如何,如果没有诊断消息,则表明编译器不符合该标准。