VS2019 使用WTL实现多态

使用WTL实现C++中多态的特性
下面展示一些 内联代码片

// WTLStudy.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <atlbase.h>
#include <atlwin.h>
class MyWindow :public CWindowImpl<MyWindow>
{
    
};
template<class T>
class Edoyun
{
public:
    void show() {
        T* p = static_cast<T*>(this);
        p->Name();

    }
protected:
    void Name() { std::cout << "Edoyun" << std::endl; }
};
class Sub :public Edoyun<Sub>
{
public:
    void Name() {std::cout<<"Sub"<<std::endl;}
};
class Sub2:public Edoyun<Sub2>
{

};

int main()
{
    Sub sub;
    Sub2 sub2;
    sub.show();
    sub2.show();
}

输出打印
在这里插入图片描述
将 Sub2中的方法实现
在这里插入图片描述
打印输出
在这里插入图片描述

这种方法的好处在于
1 没有虚函数表(一个虚函数需要4个字节),减少程序体积,节省内存
2不需要使用指向对象的指针,没有虚函数表,所以不会发生再运行时调用空指针指向的虚函数
3 虚函数是再运行时确定调用(查虚函数表),WTL是再编译的时候确定的(运行效率高)

使用说明 微软最新的编程工具Visual Studio 2013 已经发布,想在该平台下使用WTL的话,目前还没有对应的安装文件(一般学者),本人将自己改写的文件上传到优快云,供朋友使用。改写的版本为 WTL81_12085 第一步:下载文件包“WTL_81_12085_For_VS2013.rar”,解压后,有两个文件夹和两个文件 文件夹: Application (WTL添加到VS创建向导里的一些文件) 文件夹: Include (include就是WTL的头文件) 文件: setup120.js (安装脚本) 文件: 使用说明.txt 第二步:找到"VS安装目录\VC\VCWizards\AppWiz"这个目录, 如我电脑上就是"F:\Program Files\Microsoft Visual Studio 12.0\VC\VCWizards\AppWiz", 在这个目录下新建一个WTL文件夹,然后将Application文件夹和setup120.js拷贝到WTL文件夹下。 第三步:双击“setup120.js”进行安装,或者用命令行执行。 命令行操作方法如下: 运行CMD,执行如下代码: wscript //e:jscript "F:\Program Files\Microsoft Visual Studio 12.0\VC\VCWizards\AppWiz\WTL\setup110.js" 第四步:在“安装盘:\Program Files\Microsoft Visual Studio 12.0\VC”建一个WTL文件夹, 将解压出来的Include文件夹拷贝到此文件夹下面。 在编译工程时,将“安装盘:\Program Files\Microsoft Visual Studio 12.0\VC\WTL\Include”目录添加进包含目录。 第四步,可以不操作,只要编译时,将Include (WTL的头文件)目录添加进包含目录。 添加包含目录的操作为:打开工程属性页->配置属性->VC++目录->包含目录->编辑->写入路径->确定 也可以通过改写配置文件,添加为默认的包含路径,具体的方法请在网上找一下。 任何单位或个人转发本文件包请保留作者信息,谢谢! 水梦雪 SnowEmail3074@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老了希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值