我可以从对象外部调用 VFunc 吗?
Can i call VFunc from outside of the object?
我喜欢这段代码的结果,但我很好奇,是否可以从main()调用B::VFunc()?我知道在 C 内部编写B::VFunc();
会调用它,但是是否可以从对象外部调用该函数?
http://ideone.com/Dg8aa
#include <cstdio>
class I { public: virtual void VFunc()=0; };
class B : public I { public: void VFunc() { printf("Bn"); } };
class C : public B { public: void VFunc() { printf("Cn"); } };
int main(){
C v;
B&i = v;
i.VFunc();
}
输出:
C
这将做到这一点:
#include <cstdio>
class I { public: virtual void VFunc()=0; };
class B : public I { public: void VFunc() { printf("Bn"); } };
class C : public B { public: void VFunc() { printf("Cn"); } };
int main(){
C v;
B&i = v;
i.B::VFunc();
}
示例:http://ideone.com/MfyYJ
你可以诉诸切片:
C v;
B i = (B)v;
http://ideone.com/YVI2T
v
的动态类型丢失,因此调用B::VFunc
。
相关文章:
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- 调用外部函数,无法指定类型 C++/MVS
- 在结构外部调用指向函数的指针
- 如何在 C/C++ 中从外部库调用函数
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- 从类C++外部调用指向成员方法的成员指针
- 通过外部分配的数据调用特征 GEMM
- 从外部文件C++调用函数
- NASM 调用外部C++功能
- 使用什么,外部调用或 COM 或其他
- 从外部调用静态C函数
- 如何调试外部调用的C++可执行文件
- 不支持外部调用 - CUDA
- C++:如何从外部调用父类函数
- 来自C++的未解析的外部调用 C 函数
- 我可以从对象外部调用 VFunc 吗?
- 如果由另一个 OpenMP 程序调用,则外部调用的 OpenMP 程序仅使用一个线程运行
- 从外部调用封装类成员函数时不加载SFML纹理
- 向外部调用程序返回一个值