C++ virtual使用总结
来源:互联网 发布:川岛芳子是方姥 知乎 编辑:程序博客网 时间:2024/05/12 02:49
案例一:
class A
{
public:
virtual void print(){
printf("A::print");
};
};
class B : public A
{
public:
virtual void print(){
printf("B::print");
};
};
void test()
{
B b;
B* p0 = &b;
A* p1 = &b;
p0->print(); // B::print,p0/p1都是指向对象b,并且A::print()是virtual的,所以都是调用B::print()
((A*)p0)->print(); // B::print
p1->print(); // B::print
((B*)p1)->print(); // B::print
p0->A::print(); // A::print,派生类调用基类同名函数,调用A::print()
}
结果:
B::print
B::print
B::print
B::print
A::print
案例二:
class A
{
public:
void print(){
printf("A::print");
};
};
class B : public A
{
public:
void print(){
printf("B::print");
};
};
void test()
{
B b;
B* p0 = &b;
A* p1 = &b;
p0->print(); // B::print,指针类型为B*,调用B::print()
((A*)p0)->print(); // A::print,派生类指针强制转制为基类,指针类型是A*,调用A::print()
p1->print(); // A::print,指针类型是A*,调用A::print()
((B*)p1)->print(); // B::print,基类指针强制转换为派生类,指针类型是B*,调用B::print()
p0->A::print(); // A::print,派生类调用基类同名函数,调用A::print()
}
结果:
// B::print
// A::print
// A::print
// B::print
// A::print
- C++ virtual使用总结
- C#virtual,override,new的使用
- c++virtual
- c++ virtual总结
- c++ virtual总结
- C# virtual 四点总结
- Virtual的一些总结
- c++ virtual总结
- virtual关键字用法总结
- C++ virtual 总结
- c++ virtual总结
- c++ virtual总结
- C++ Virtual总结
- Virtual Disk 项目总结
- friend static virtual 总结
- 关于C#:abstract,virtual
- C++Virtual详解
- Virtual & Abstract (C++)
- 2010-2-11
- 验证码
- c#-以二进制方式读文件
- java base
- CSS IE6+、FF兼容 图片大小自适应
- C++ virtual使用总结
- 万年历---html
- 关于时间的管理
- Oracle:PL/SQL 中如何使用Array
- C#生成缩略图及水印
- 需要判断指针为空吗
- Fuzzy application (2):pattern recognization using flexible variable
- 万年历---html
- 以色列数学家破解路线着色谜题 全球数学界震惊