Derive* pd = (Derive*)(new Base());
pd->VirFun();
pd可以找到Base的虚方法。但在C#的编译器里编译不过?
14 个解决方案
#1
这么做很危险~
#2
C++ 相信程序员,C# 不相信。
#3
但是C++从来没说这么做是对的,是安全的。
#4
C++从来不推荐
#5
怎么不可以
#6
不建议这么写
一旦调用子类的函数就会出错
一旦调用子类的函数就会出错
#7
因为危险 所以不让C#里面这么做
#8
C风格的转换可以从任意一种指针转换成任意另外一咱指针。如果你用static_cast,肯定就不可以了。
#9
强制转换..
并不是C++可以将基类强制转换为派生类.这是 C 强制转换
Derive* pd = (Derive*)(new Base()); 只是[指针]类型转换
就算是...........也可以
char *pc = (char *)(new Base);
ccav *pp = (ccav *)(new Base);
// 只是指针类型转换, 跟 类 无关系, 这是两码事
并不是C++可以将基类强制转换为派生类.这是 C 强制转换
Derive* pd = (Derive*)(new Base()); 只是[指针]类型转换
就算是...........也可以
char *pc = (char *)(new Base);
ccav *pp = (ccav *)(new Base);
// 只是指针类型转换, 跟 类 无关系, 这是两码事
#10
错字大王修正了:任意另外一
种指针……
#11
C++为了兼容C语言的转换风格而产生的遗留问题吧!
何必纠结这个,试试C++风格的转换吧!
何必纠结这个,试试C++风格的转换吧!
#12
想法一样
#13
如果这样呢:
Derive* pd = dynamic_cast<Derive*>(new Base());
这是C++ 的转换了?
Derive* pd = dynamic_cast<Derive*>(new Base());
这是C++ 的转换了?
#14
带着C#的思维学C++,楼主的路痛苦着呢。
建议还是转java吧。
建议还是转java吧。
#1
这么做很危险~
#2
C++ 相信程序员,C# 不相信。
#3
但是C++从来没说这么做是对的,是安全的。
#4
C++从来不推荐
#5
怎么不可以
#6
不建议这么写
一旦调用子类的函数就会出错
一旦调用子类的函数就会出错
#7
因为危险 所以不让C#里面这么做
#8
C风格的转换可以从任意一种指针转换成任意另外一咱指针。如果你用static_cast,肯定就不可以了。
#9
强制转换..
并不是C++可以将基类强制转换为派生类.这是 C 强制转换
Derive* pd = (Derive*)(new Base()); 只是[指针]类型转换
就算是...........也可以
char *pc = (char *)(new Base);
ccav *pp = (ccav *)(new Base);
// 只是指针类型转换, 跟 类 无关系, 这是两码事
并不是C++可以将基类强制转换为派生类.这是 C 强制转换
Derive* pd = (Derive*)(new Base()); 只是[指针]类型转换
就算是...........也可以
char *pc = (char *)(new Base);
ccav *pp = (ccav *)(new Base);
// 只是指针类型转换, 跟 类 无关系, 这是两码事
#10
错字大王修正了:任意另外一
种指针……
#11
C++为了兼容C语言的转换风格而产生的遗留问题吧!
何必纠结这个,试试C++风格的转换吧!
何必纠结这个,试试C++风格的转换吧!
#12
想法一样
#13
如果这样呢:
Derive* pd = dynamic_cast<Derive*>(new Base());
这是C++ 的转换了?
Derive* pd = dynamic_cast<Derive*>(new Base());
这是C++ 的转换了?
#14
带着C#的思维学C++,楼主的路痛苦着呢。
建议还是转java吧。
建议还是转java吧。