zoukankan      html  css  js  c++  java
  • C语言可以包含.txt文件

    // fa.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include "iostream"
    #include"test.txt"
    using namespace std;


    int main(){
    void (*fun)(A*);//定义了一个函数指针,名字叫做fun,该函数有一个参数,是A*类型的。
    A *p=new B;//向内存自由区申请一个内存单元地址,然后隐式保存在一个指针中,然后把这个地址赋给A类型的指针p。
    long lVptrAddr;//待会儿用来保存vptr的值。
    memcpy(&lVptrAddr,p,4);//他们的实例对象里只有vptr指针,所以我们就放
    //心大胆地把p所指的4bytes内存里的东西复制到lVptrAddr中,所以复制出来的4bytes内容就是vptr的值,即vtbl的地址
    //现在有了vtbl的地址了,那么我们现在就取出vtbl第一个slot里的内容
    memcpy(&fun,reinterpret_cast<long*>(lVptrAddr),4);//取出vtbl第一个slot里的内容,并存放在函数指针fun里。
    //需要注意的是lVptrAddr里面是vtbl的地址,但lVptrAddr不是指针,所以我们要把它先转变成指针类型
    fun(p);//这里就调用了刚才取出的函数地址里的函数,也就是调用了B::fun()这个函数,
    //也许你发现了为什么会有参数p,其实类成员函数调用时,会
    //有个this指针,这个p就是那个this指针,只是在一般的调用中编译器自动帮你处理了而已,而在这里则需要自己处理。
    delete p;//释放空间。
    system("pause");
    }

    ///////////////////////////////////////////////////////////////////////

    我将类定义在test.txt中

    /*class A{ //虚函数示例代码,实例对象里只有vptr指针
    public:
    virtual void fun(){cout<<1<<endl;}
    virtual void fun2(){cout<<2<<endl;}
    };
    class B:public A{
    public:
    void fun(){cout<<3<<endl;}
    void fun2(){cout<<4<<endl;}
    };*/

    结果发现是可以运行的。

    结论是可以把汗.txt文件的。

  • 相关阅读:
    记录下我的阿里云centos服务器之路
    git-ftp 用git管理ftp空间
    标准插件写法
    函数防抖 主要用于限制高频触发事件函数的执行间隔
    js 各进制前缀 及 转换
    微信 小程序 canvas
    微信 小程序 drawImage wx.canvasToTempFilePath wx.saveFile 获取设备宽高 尺寸问题
    canvas画布在主流浏览器中的尺寸限制
    js的一些坑,持续增加,学习js应该注意的问题
    js => ES6一个新的函数写法
  • 原文地址:https://www.cnblogs.com/hackerl/p/3324217.html
Copyright © 2011-2022 走看看