![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 81
米碎师兄
保持冷静、适应、改变
展开
-
c++重载new操作符
new是C++里非常重要的一个关键词,用于申请内存、初始化对象。俗话说“有借有还再借不难”,通过new向操作系统“借”到的内存用完后必然要“还”回去,所以对应地还有一个delete操作符与new共同管理内存,delete的作用是析构对象、释放内存。new有什么作用?申请内存初始化对象说到内存管理,有些同学会想到C标准库函数malloc()和free()。C++是C语言的延续,那么C++一定可以丝滑地使用这两个标准库函数管理内存,那为什么还要提供关键词new和delete呢?我们申请到内存后一般原创 2022-05-05 22:26:11 · 2967 阅读 · 2 评论 -
Java和C++的联系与区别
编程语言界的两大佼佼者 Java 和 C++ 在TIOBE榜单中常年名列前茅,尤其 Java 更是经常问鼎TIOBE,可见这两门语言的受欢迎程度之高。因为 Java 和 C++ 的风格比较像,但主要用途、特性有些不同,所以有必要了解了解它们的关系和差异。 在了解他俩的关系之前我们先熟悉一下这两门语言的基本信息:C++Java创始人Bjarne StroustrupJames Gosling发布时间19831995定位高级语言高级语言基础CC+原创 2021-08-04 01:20:32 · 10729 阅读 · 0 评论 -
c++内联(inline)函数不报重定义错误分析
inline函数不报重定义错误浅析1 问题背景关键字inline用于建议编译器在调用处展开被修饰的函数,但最终是否展开取决于编译器的行为gcc配置参数-O0时不会进行编译优化,inline关键字不生效gcc配置参数-O2时会进行编译优化,inline关键字生效C/C++语法中,如果变量、函数在同一个工程中被多次定义,链接期间会报类似“对 xxx 多重定义”的错误;inline函数如果会在多处被调用,则需要将函数的定义写在头文件中注:当inline函数的声明和定义分别在头文件和原创 2020-12-15 13:05:24 · 2350 阅读 · 1 评论 -
c++编译工具链
1 C/C++编译工具进化C/C++开发中使用到的代码编译工具GCC、make、cmake,进化历程如下。1) 为什么需要gcc?试想,我们写了一份C++源码文件main.cpp,该如何让它变成可执行文件呢?对,用编译器将源码文件翻译成可执行文件,此时就会用到GCC。GCC:GNU Compiler Collection。可以简单理解为编译器,其主要作用就是将源码文件编译为可执行文件(gcc相关内容较多,不是本片重点,不展开讲)。gcc -C main.cpp -o myApp以上原创 2020-12-03 21:00:39 · 485 阅读 · 1 评论 -
c++中extern “C“的作用及理解
1 意图extern "C"是C++特有的指令(C无法使用该指令),目的在于支持C++与C混合编程。2 作用extern “C”的作用是告诉C++编译器用C规则编译指定的代码(除函数重载外,extern “C”不影响C++其他特性)。3 原因为什么要用C规则编译C++代码呢?因为C和C++的编译规则不一样,主要区别体现在编译期间生成函数符号的规则不一致。C++比C出道晚,但是增加了很多优秀的功能,函数重载就是其中之一。由于C++需要支持重载,单纯的函数名无法区分出具体的函数,所以原创 2020-12-01 10:36:51 · 34632 阅读 · 16 评论 -
c/c++中的struct与typedef struct
在C++中,关键字struct和typedef struct都可以定义一个结构体,但是两者在使用中有所不同。区别主要在于定义结构体时,右花括号后的字段意义不同1)struct定义结构体struct ClassName { ...}Instance;此时,花括号后的字段Instance表示结构体ClassName的一个实例;2)typedef struct定义结构体type...原创 2020-01-09 00:00:16 · 252 阅读 · 1 评论