打印虚表

虚表注意display中打印成员变量时需注意(eg:string可能出错)

当基类中没有子类对应虚函数,调试窗口不显示,需打印出来

//#include<iostream>
//using namespace std;
//typedef void(*Fun)();
//class AA
//{
//public:
//	virtual void Fun1()
//	{
//		cout << "AAFun1()" << endl;
//	}
//	virtual void Fun2()
//	{
//		cout << "AAFun2()" << endl;
//	}
//};
//class BB :public AA
//{
//public:
//	virtual void Fun1()
//	{
//		cout << "BBFun1()" << endl;
//	}
//	virtual void Fun3()
//	{
//		cout << "BBFun3()" << endl;
//	}
//	virtual void Fun4()
//	{
//		cout << "BBFun4()" << endl;
//	}
//};
//void PrintVTable(int* vTable)
//{
//	for (int i = 0; vTable[i] != 0; ++i)
//	{
//		Fun f = (Fun)vTable[i];
//		f();
//	}
//}
//void Test1()
//{
//	AA a;
//	BB b;
//	int* vTable = (int *)*(int*)&a;
//	PrintVTable(vTable);
//
//	vTable = (int *)*(int*)&b;
//	PrintVTable(vTable);
//}
时间: 2025-01-18 14:23:56

打印虚表的相关文章

虚函数——虚表总结

非虚拟继承 [带虚函数的类] class Base { public: virtual void FunTest1() { cout<<"Base::FunTest1()"<<endl; } virtual void FunTest2() { cout<<"Base::FunTest2()"<<endl; } int _data1; }; int main() { Base b; b._data1 = 0x01; re

深入理解虚表之非虚拟继承及虚拟继承

非虚拟继承 [带虚函数的类] class Base { public: virtual void FunTest1() { cout<<"Base::FunTest1()"<<endl; } virtual void FunTest2() { cout<<"Base::FunTest2()"<<endl; } int _data1; }; int main() { Base b; b._data1 = 0x01; re

C++里的继承和多态(下)——单继承、多继承、菱形继承(含虚拟函数的继承)

1.带有虚函数的类 class Base { public:                  virtual void FunTest1()                 {                                 cout << "Base::FunTest1()" << endl;                 }                  virtual void FunTest2()                 

C++构造函数中调用虚函数

谈谈关于构造函数中调用虚函数的情况,仅讨论单继承,不考虑虚拟继承和多重继承. 测试平台:VS2013 + Win7X64 一个例子: #include <stdlib.h> #include <stdio.h> class Base { private: int __data; public: Base() { this->Func(); } public: virtual void Func() { printf("Base::Func"); } };

c打印9*9乘法表

c打印9*9乘法表(这里提供了两种打印方法).乘号两边有规律可寻,其左边递减,右边递增. 1 #include <stdio.h> 2 int main() 3 { 4 int i, j, result; 5 for (i = 9; i >= 1; i--) //外层循环,从9开始,每次循环自减1 6 { 7 for (j = 1; j <= i; j++) //内层循环,从1开始,每次循环自加1 8 { 9 result = i*j; 10 printf("%d*%d=

按之字形顺序打印二叉树

题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vect

设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的文件是否是一个目录:isDirectory()           返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件:listFiles() package printfilename; import java.io.File; public class PrintFileNam

linux提取指定列字符并打印所有内容(awk)

假设有文件长如下样子: CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  samplename 1 3552841 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1 1 3552842 . T . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0

完成打印购物小票并计算积分

import java.util.Scanner; /** * @author 蓝色以太 * 完成打印购物小票并计算积分 */ public class ShoppingReceipt { public static void main(String[] args) { Scanner sc=new Scanner(System.in); final int NUM1=245,NUM2=570,NUM3=320; System.out.println("请输入购买T恤数量:"); in