当前位置: 首页 > news >正文

[NKU]C++基础课(二)--- externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、类的定义、封装

一、extern "C"  (没看懂)

extern "C" 是 C++ 语言中的一个特性,用于在 C++ 代码中声明使用 C 语言链接的变量或函数。这样做的目的主要是为了实现 C++ 代码与 C 代码之间的互操作性
C++ 支持函数重载,而 C 不支持,因此编译器会为 C++ 中的同名函数生成不同的符号名(通常称为名称修饰或名称改编),以区分不同参数列表的函数。
但是,C 语言编译器生成的符号名则相对简单,不包含函数参数类型的信息。
这就导致了直接使用 C++ 编译器编译的代码无法与 C 语言编译器编译的代码进行链接,除非采取一些措施。
extern "C" 正是用来解决这个问题的。通过在 C++ 代码中声明 extern "C",可以告诉 C++ 编译器这部分代码应该按照 C 语言的规则进行编译和链接,即不进行名称修饰。

  • extern "C" 只能用于 C++ 代码中。C 语言本身不支持这一语法。
  • 在 C++ 代码中调用 C 语言代码时,通常需要确保 C 语言代码是按照 C 标准编译的,而不是 C++。
    这通常意味着你需要使用 C 编译器(如 gcc)而不是 C++ 编译器(如 g++)来编译 C 语言代
    码。
extern "C" void myFunction();

【C++基础】externC_哔哩哔哩_bilibili
下面是视频教程
// 如果前面有
#ifdef __cplusplus
则这里需要对应的
#endif
来结束条件编译块

C的头文件 mallcStr.h. (插入硬盘的插头)

#include<stdio.h>
#include<stdlib.h>

char* func(int, char*);

mallocStr.c (插入硬盘的主体)

#define _CRT_SECURE_NO_WARNINGS
#include"mallocStr.h"  //使用malloc动态分配内存
char* func(int size, char *str){
    char* p = malloc(size);
    strcpy(p, str);
    return p;
}

main.cpp  (电脑主机)

#include<iostream>
using namespace std;

#ifdef __cplusplus
// 这里是C++环境下的(extern "C"块)代码开始
extern "C"
{
#endif

#include"mallocStr.h"

#ifdef __cplusplus
}// 这里是C++环境下的代码结束
#endif

int main(){
    char str[] = "C++";
    char* p = func(sizeof(str)+1, str);
    cout << p << endl;
    free(p);

    return 0;
}

二、强制类型转换

MustTypeTransfer.cpp

#include<iostream>
using namespace std;

int main(){
    // 1.static_cast<type>(expression)
    // 常类型转换、基本类型转换、任意类型转换、空指针、类
}

相关文章:

  • java死锁
  • 轮子项目--消息队列的实现(4)
  • openharmony系统移植之显示驱动框架从framebuffer升级为drm(linux-5.10)
  • 【Java】—— 包装类泛型
  • 【go语言规范】关于接口设计
  • 财务系统的开发需要注意哪些东西
  • Java-数据结构基础1
  • 【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)
  • LeeCode题库第十九题
  • 「软件设计模式」适配器模式(Adapter)
  • 使用 Ansys Fluent 进行电池热滥用失控传播仿真
  • 算法思考:位运算
  • CNN手写数字识别1——模型搭建与数据准备
  • 【C语言】移除元素
  • 代码随想录算法【Day47】
  • 解决`Illegal group reference: group index is missing`的两种方式
  • 【linux学习指南】⽣产者消费者模型
  • python电影数据分析及可视化系统建设
  • 深度学习在天文观测中的应用:解锁宇宙的奥秘
  • `fi` 是 Bash 脚本中用来结束 `if` 条件语句块的关键字
  • 央行:中国政府债务扩张仍有可持续性
  • 股价两天涨超30%,中航成飞:不存在应披露而未披露的重大事项
  • 圆桌丨中俄权威专家详解:两国携手维护战后国际秩序,捍卫国际公平正义
  • 马上评|孩子亲近自然只能靠公园露营了吗
  • 江淮、极氪、奇瑞,排着队造“劳斯莱斯”
  • 我国外汇储备规模连续17个月稳定在3.2万亿美元以上