#include <iostream>
using namespace std;
class A
{
public:
A()
{
}
virtual ~A()
{
};
public:
virtual void fun()
{
cout << "A::fun()" << endl;
}
virtual void fun2()
{
cout << "A::fun2()" << endl;
}
void test()
{
cout << "A::test()" << endl;
test2();
fun2();
}
void test2()
{
cout << "A::test2()" << endl;
}
};
class B:public A
{
public:
B()
{
}
virtual ~B()
{
}
public:
virtual void fun()
{
cout << "B::fun()" << endl;
test();
}
virtual void fun2()
{
cout << "B::fun2()" << endl;
}
void test1()
{
cout << "B::test1()" << endl;
test();
}
void test2()
{
cout << "B::test2()" << endl;
}
};
int main()
{
cout << "========== use pointer =============" << endl;
A* pa = new B();
pa->fun();
delete pa;
cout << endl << endl;
cout << "========== use object =============" << endl;
B b;
b.test1();
return 0;
}
执行结果
========== use pointer =============
B::fun()
A::test()
A::test2()
B::fun2()
========== use object =============
B::test1()
A::test()
A::test2()
B::fun2()
分享到:
相关推荐
本文将深入探讨C++虚函数表的相关知识点,并通过标题中提到的测试源码进行详细讲解。 首先,理解虚函数的定义:在C++中,当一个基类的指针或引用指向派生类的对象时,如果该基类有一个虚函数,那么通过指针或引用...
### C++多态性与虚函数知识点解析 #### 一、多态性的概念 多态性是面向对象编程的一个核心特性,它允许我们通过基类的接口来操作派生类的对象。这种特性使得代码更加灵活且易于扩展。在C++中,多态性主要通过虚函数...
总结来说,这个测试用例主要关注虚函数在C++中的作用,包括多态性、动态绑定、抽象类和接口设计、资源管理以及虚函数表的工作原理。通过一系列的例子和测试,我们可以深入理解虚函数如何提升代码的灵活性和可扩展性...
C++测试题知识点整理 一、C++程序的基本结构 ...本文总结了C++测试题中的知识点,涵盖了C++程序的基本结构、类的构造函数、操作符重载、虚函数和纯虚函数、STL库、数据类型和extern关键字等方面。
3. **多态**:如果可能,利用C++的虚函数和继承实现多态,使得在`CLearnDlg`中可以使用不同的逻辑类而无需修改代码。 4. **依赖注入**:`CLearnDlg`不应直接创建逻辑类的实例,而是通过构造函数或者`SetLog()`这样的...
《C++中溢出覆盖虚函数指针技术》是一份深入探讨网络安全中漏洞利用的专题文档,主要关注C++编程语言中的一个特定安全问题:缓冲区溢出导致的虚函数指针覆盖。在这个主题中,我们将详细解析这个问题的原理、危害以及...
总的来说,这个压缩包的测试旨在教育开发者关于C++虚函数的内存使用情况,这对于理解和优化内存敏感的程序是至关重要的。通过这样的实验,我们可以更好地理解多态性带来的好处以及潜在的成本,从而在设计面向对象的...
在练习程序`testVirtual1`中,可能会包含一系列的测试用例,展示了如何声明和使用虚函数,以及它们在多层继承结构中的行为。这些例子可能涵盖了纯虚函数(只有声明没有实现,强制派生类必须提供自己的实现)、虚析构...
如果类中有虚函数,那么每个对象都会有一个指向该类虚函数表的指针,这使得子类能够重写基类的函数并保持一致的调用接口。 此外,C++支持构造函数和析构函数,它们在对象生命周期的开始和结束时自动执行,用于初始...
C/C++单元测试,虚函数依赖函数的gtest+gmock的demo示例,Linux下开箱即用。 整个工程带有完整的依赖,开箱即用。合适尝新的工程师入门体验~ 该资源是博文《虚函数依赖如何单元测试》的随文示例demo,结合博文更易...
C/C++单元测试,非虚函数依赖得函数gtest+cppfreestub的demo示例,Linux下开箱即用。 整个工程带有完整的依赖,开箱即用。合适尝新的工程师入门体验~ 该资源是博文《非虚函数依赖如何单元测试》的随文示例demo,结合...
在C++编程语言中,虚函数(virtual functions)是一个关键特性,它允许我们实现多态性,即在不关心对象具体类型的情况下,调用适当的成员函数。本文将深入探讨C++父类子类中虚函数的应用,以帮助读者更好地理解和...
多态是指同一种行为在不同的对象上表现出不同的效果,这在C++中主要通过虚函数和抽象类实现。 5. **模板**:模板是C++中实现泛型编程的工具,它可以为不同数据类型创建通用函数或类。模板有函数模板和类模板两种,...
在C++编程语言中,纯虚函数(pure virtual function)是一种特殊的虚函数,它被声明为没有函数体,通常在基类中定义,用于强制所有派生类必须重写这个函数。这种机制是C++多态性的重要组成部分,使得我们可以创建...
在编程领域,虚函数是面向对象编程中的一个重要概念,特别是在C++这种支持多态性的语言中。本项目“基于虚函数的图形面积计算”旨在利用虚函数实现对不同几何图形(如三角形、圆、梯形和矩形)面积的计算,并通过...
描述一下C++中的虚函数和纯虚函数的区别?如何在实际项目中应用软件测试策略? 在“面试题汇总”这个压缩包中,可能包含了上述各种知识点的具体题目和解答,是准备软件测试面试的宝贵资源。通过学习和解答这些题目...
5. **多态**:多态允许不同对象对同一消息做出不同的响应,主要通过虚函数和纯虚函数实现。 6. **模板**:C++的模板功能可以创建泛型代码,提高代码复用,包括函数模板和类模板。 7. **STL(标准模板库)**:包括...
一个小测试,可以认识到虚函数与多态性的认识
如果一个类中的函数没有被声明为虚函数(或纯虚函数),那么在单元测试中就无法使用gMock来模拟该函数的行为。 为了使用gMock,需要进行接口隔离设计。具体来说,应该采用纯虚函数(即接口)来定义类的行为,然后...