iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类包含函数有哪些
  • 507
分享到

C++类包含函数有哪些

2023-06-17 16:06:12 507人浏览 安东尼
摘要

这篇文章主要讲解了“c++类包含函数有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类包含函数有哪些”吧!C++类包含三个我们关心的函数:构造函数,析构函数,和所有重要的 DoSo

这篇文章主要讲解了“c++类包含函数有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类包含函数有哪些”吧!

C++类包含三个我们关心的函数:构造函数,析构函数,和所有重要的 DoSomething 函数,我们需要把每一个函数包裹成与其等价的C++函数,在这里拿出来和大家分享一下。

// original class  class CFoo  {  public:   CFoo(int x);   ~CFoo();   int DoSomething(int y);  };  // flattened C code  void* __stdcall new_CFoo(int x)  {   return new CFoo(x);  }  int __stdcall CFoo_DoSomething(void* handle, int y)  {   CFoo *foo = reinterpret_cast<CFoo *>(handle);   return foo->DoSomething(y);  }  void __stdcall delete_CFoo(void *handle)  {   CFoo *foo = reinterpret_cast<CFoo *>(handle);   delete foo;  }

这里有几个比较重要的地方要注意。首先,注意每一个C++类被映射为一个简单的 C 函数。其次,观察到我们为 C 函数明确地使用 __stdcall 调用习惯。在前一篇 DLL 文章里,我们知道简单的调用在 MSVC DLL 里的无格式 C 函数,真是很麻烦。

如果我们放弃越过种种艰难困苦去用它,我们可以使这个努力稍微容易一点。让 Borland 调用 Microsoft DLL 最简单的办法是 DLL 导出无格式,无修饰,__stdcall 调用习惯的 C++函数。Borland 和 Microsoft 对 __cdecl 函数的处理上是不同的。

通常,他们对 __stdcall 函数也不同,因为 MSVC 修饰 __stdcall 函数,但我们可以通过添加一个 DEF 文件到 MSVC 工程里来阻止这种行为。参见下载部分的例子有 DEF 文件的例子。其它关于代码要注意的事情是 new_CFoo 函数返回一个指向 CFoo 对象的指针。BCB 调用者必须在本地保存这个指针。这可能看起来和这篇文章的主题有点矛盾。

毕竟,我想 BCB 不能使用来自 MSVC DLL 的 C++类?如果那是正确的,那么为什么我们还要返回一个 CFoo 对象指针呢?答案是 BCB 不能调用 MSVC DLL 导出类的成员函数。但是,这并不意味着它不能存储这样对象的地址。new_CFoo 返回的是一个 CFoo 对象的指针。

BCB 客户端可以存储这个指针,但不能用。BCB 不能废弃它(不应当尝试这么做)。让这个观点更容易理解一点,new_CFoo 返回一个空指针(总之它不能返回别的什么东西)。在 BCB 这边,除了存储它,然后把它传回给 DLL,没有什么可以安全地处理这个空指针的方法。

Ok,在我们继续前进之前,还有另外两个要十分注意的地方。首先,注意 CFoo_DoSomething 把空指针作为它的***个参数这个空指针与 new_CFoo 返回的是同一个空指针。空指针用 reinterpret_cast 被追溯到 CFoo 对象(你知道,当你看到一个 reinterpret_cast 的时候。

你正在处理是难看的代码)。DoSomething 成员函数在转换之后被调用。***注意空指针也是C++类的参数。包装 DLL 删除对象是至关紧要的。你不应当在 BCB 里对空指针调用 delete。显然它不会按你想的去做。

感谢各位的阅读,以上就是“C++类包含函数有哪些”的内容了,经过本文的学习后,相信大家对C++类包含函数有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C++类包含函数有哪些

本文链接: https://www.lsjlt.com/news/291036.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++类包含函数有哪些
    这篇文章主要讲解了“C++类包含函数有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类包含函数有哪些”吧!C++类包含三个我们关心的函数:构造函数,析构函数,和所有重要的 DoSo...
    99+
    2023-06-17
  • PHP包含文件函数有哪些
    在PHP中,有以下几种方法可以包含文件:1. include():该函数会包含指定的文件,并在包含过程中产生警告和错误,但不会导致脚...
    99+
    2023-09-26
    PHP
  • C++ 函数的定义需要包含哪些部分?
    在 c++++ 中,函数定义包含函数头和函数体。函数头包括返回类型、函数名称和参数列表,而函数体包含要执行的代码语句。例如,一个返回给定数字平方的函数可以定义为:int square(i...
    99+
    2024-04-19
    c++ 函数定义 返回类型 参数列表 函数名
  • c++中string的头文件包含哪些常用函数
    c++ 的 头文件提供了一系列操作字符串的函数,包括:创建字符串:string()、string(const char* str)、string(const string& o...
    99+
    2024-05-11
    c++
  • python函数包有哪些
    python中常见的函数包有以下几种NumpyNumpy是一种机器学习和数据科学包,Numpy包中支持在多维数据上的数学运算,提供数据结构以及相应高效的处理函数。ScipyScipy是一个科学计算库,常用于科学计算,提供矩阵支持,以及矩阵相...
    99+
    2024-04-02
  • PHP 函数返回引用类型的数据有哪些含义?
    在 php 中,函数返回引用类型的数据意味着它返回变量在内存中的地址,对该引用的更改会直接影响原始变量,从而提高效率和方便共享数据。 PHP 中返回引用类型的数据意味着什么 在 PHP...
    99+
    2024-04-21
    php 引用
  • PHP 函数返回对象类型的数据有哪些含义?
    含义: php 函数返回对象类型数据时,表示创建了一个新对象的引用,并将其返回。对象动态创建并返回引用。对象可以在函数外部使用。优点:代码可重用性:对象封装状态和方法。信息封装:对象将数...
    99+
    2024-04-20
    php 对象类型
  • Golang 函数注释中应包含哪些元数据?
    golang 函数注释应包含以下元数据:函数签名:函数名称、类型签名和接收器类型(若有)。参数描述:参数类型、目的和约束。返回值描述:返回值类型、含义和用法。错误处理:错误条件、错误类型...
    99+
    2024-04-18
    golang 函数注释元数据 代码可读性
  • C++类的默认成员函数有哪些
    本文小编为大家详细介绍“C++类的默认成员函数有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++类的默认成员函数有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。类的默认成员函数每个类中,如果不主动实...
    99+
    2023-06-29
  • SAP C/4HANA包含了哪些产品
    这期内容当中小编将会给大家带来有关SAP C/4HANA包含了哪些产品,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。2018年6月的SAPPHIRE(蓝宝石大会)上, SAP发布了新的商务软件套件:C/4...
    99+
    2023-06-05
  • C++类中隐藏的默认函数有哪些
    这篇文章主要介绍了C++类中隐藏的默认函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Test类中隐藏的六个默认的函数class Test{public:/...
    99+
    2023-06-29
  • C++ 中函数的返回值类型有哪些?
    c++++ 中函数的返回值类型定义了执行后返回的值的类型:基本类型:void(不返回值)、bool、整数、浮点、字符引用类型:类型引用、类型指针结构体或类:类型实例 C++ 中函数的返...
    99+
    2024-04-12
    c++ 返回值类型
  • HTML5包含的标签有哪些
    本篇内容介绍了“HTML5包含的标签有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 文件包含函数
    将代码传入文件,从而直接执行文件中的代码 通常文件包含漏洞产生于文件包含函数 LFI:Local File Inclusion,本地文件包含漏洞,大部分情况下遇到的文件包含漏洞都是LFI RFI:Remote File Inclusion,...
    99+
    2023-09-01
    php web安全 开发语言
  • python函数有哪些类型
    python中函数的类型有以下四种无参数,无返回值无参数,无返回值函数,不能接收参数,也没有返回值,一般用于打印提示等类似的功能。无参数,有返回值无参数,有返回值函数,不能接收参数,但是可以返回某个数据,一般用于采集数据等场景。有参数,无返...
    99+
    2024-04-02
  • C++头文件中包含哪些内容
    C++头文件中包含哪些内容,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C++头文件之C、传统 C++ #include < assert.h&g...
    99+
    2023-06-17
  • C#参数类型有哪些
    本篇内容主要讲解“C#参数类型有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#参数类型有哪些”吧!C#参数类型◆值参数:不含任何修饰符。方法中的形参是实参的一份拷贝,形参的改变不会影响到...
    99+
    2023-06-17
  • PHP 函数的文档块应该包含哪些信息?
    php 文档块是在函数中为其他开发人员编写的信息注释,包含有关函数的信息,包括:作者、日期、目标、参数、返回值、异常和用法示例。 PHP 函数的文档块 PHP 文档块是注释,提供有关函...
    99+
    2024-04-17
    php 文档块
  • C#数据类型有哪些
    C#的数据类型有值类型、引用类型、空类型、特殊类型、集合类型、日期时间类型等。详细介绍:1、值类型包括整数类型、浮点数类型、字符类型、布尔类型、枚举类型、结构体类型;2、引用类型包括字符串类型、数组类型、类类型、接口类型、委托类型;3、空类...
    99+
    2023-10-22
    C#类
  • C++ 函数库中有哪些文件和路径类?
    文件和路径类是 c++++ 标准库中用于操作文件和路径的类。文件类包括 ifstream(读取文本文件)、ofstream(写入文本文件)、fstream(读写文本文件)、ofstrea...
    99+
    2024-04-19
    c++ 文件和路径类 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作