
CPP杂项
文章平均质量分 52
cpp小知识点
Aced96
这个作者很懒,什么都没留下…
展开
-
为什么要使用动态存储空间?
1. c++中内存分为两个部分:栈:函数内部声明的所有 变量 都在 栈内存 中。堆:程序中 未使用 的内存,在程序 运行时 用于 动态分配内存。2. 为什么要使用动态分配内存?以实例化一个类为例://第1种:直接定义法 ----->直接将a放入栈区(局部变量,大小受限,自动释放)A a;//第2种:动态内存分配法-----> 堆区分配一块内存,用指针a去指向这块内存。(动态内存,大小任意,手动释放)A* a;a = new A();3. 动态分配内原创 2022-03-15 17:25:50 · 795 阅读 · 0 评论 -
typedef常见用法
一、typedef的作用1、typedef的一个重要用途是定义机器类型无关的类型。例如在适用long double的目标机器上定义名为“REAL”的数据类型:typedef long double REAL;如果在不适合long double的机器上运行相关代码,只需要修改对应的typedef语句。例如:typedef double REAL;//或者typedef float REAL;2、使用typedef为现有类型创建别名,给变量定义一个易于记忆且意义明确的新名字例如:type原创 2022-03-15 17:15:43 · 1800 阅读 · 0 评论 -
C++命令空间namespace的作用和使用解析
命令空间的作用?命名空间可为附加信息来区分不同库中相同名称的函数、类、变量等。本质上,命名空间就是定义了一个范围。例如:一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。定义命名空间#include<iostream>using namespace std;namespace first_space{ // 第一个命名空间 void func(){...}}namespace second_space{// 第二个原创 2022-03-15 17:13:20 · 306 阅读 · 0 评论 -
Visual Studio的编译过程
VS上点击编译准备生成exe文件时,编译器做了两步工作:① 将每个 .cpp 和 相应的 .h 文件编译成 obj 文件。② 将工程中的所有 obj 文件进行链接,生成最终的 .exe文件。编译时的错误:主要是语法错误。链接时的错误:主要是重复定义变量等。编译单元:指在编译阶段生成的每个 obj 文件。一个obj文件就是一个编译单元。一个 .cpp 和它相应的 .h文件共同组成了一个编译单元。一个工程文件由很多编译单元组成,每个obj文件里包含了变量存储的相对地址等。声明和定义原创 2022-03-15 17:03:08 · 6245 阅读 · 0 评论 -
将文件间的编译依存关系降至最低
结论:避免大量依赖性编译的解决方案是,在头文件中用 class声明 外来类,用指针或引用来代替变量的声明;在CPP文件中包含外来类的头文件。好处:如果A.h发生改变,所有包含类A对象的文件都要重新编。在B.cpp中包含A.h的好处是:所有用到类B对象的文件都不用重新编译。// A.hclass A{ funcA();};// A.cppA的实现// B.hclass A;class B{ A* xx; //用A的指针来替代变量的声明};// B.cpp原创 2022-03-15 17:00:38 · 1331 阅读 · 1 评论 -
理解C/C++函数指针
一、函数的类型与地址看看下面典型的函数:int func(){ return 5;}func的函数类型:无参且返回类型为int 。代码表示:int (*someotherfunc)()如果函数有两个形参且返回值为bool型呢?函数类型该怎么用代码表示?bool (*someotherfunc)(int,int)和变量一样,函数在内存中有固定的地址。函数的实质也是内存中一块固定的内存。std::cout<<func; //008A1483std::原创 2022-03-15 16:56:39 · 964 阅读 · 0 评论 -
类之间的六种静态关系和类图实现(c++)
类之间的六种静态关系和类图实现(c++)类图的表示方法:每个类分为三层,最顶层的为类名,中间层的为属性,最底层的为方法。属性 的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}方法 的表示方式为:【可见性】【方法名称】(【参数列表】):【类型】可见性 都是一样的:"-“表示private、”+“表示public、”#"表示protected。① 继承(generalization)继承:继承是最能体现面向对象代码复用的类关系。“is a”例如 duck “is a原创 2022-03-15 16:52:32 · 2934 阅读 · 0 评论 -
C++中为什么不能将全局变量定义在头文件中?
一、什么是全局变量?C++中全局变量一般指定义在函数体外的变量。全局变量按可访问性可分为外部变量和内部变量。二、内部变量和外部变量的定义内部变量:使用了static关键字修饰的全局变量。它的可访问范围(作用域)被限定在本源文件所在的链接文件模块中,不能被其他文件模块引用。外部变量:没有被static修饰的全局变量。其他文件模块可以通过extern关键字引用该全局变量并访问。三、全局变量放在头文件中会出现哪些问题?问题一:对内部变量来讲,每个include该头文件的文件模块中都会单独为这个内部原创 2021-09-06 20:30:26 · 5265 阅读 · 0 评论 -
C++中explicit关键字详解
C++中的explicit关键字只能用于修饰 只有一个参数的类构造函数。explicit的作用:表明该构造函数是 显式 的,而非隐式的。跟explicit相对应的另一个关键字是implicit,意思是隐藏的。类构造函数默认情况下即声明为implicit(隐式)。class CxString{ public: CxString(int size) { _size = size; //string的预设大小原创 2021-08-31 11:35:40 · 925 阅读 · 0 评论 -
C++异常
一、C++异常处理入门程序常见的三种错误:语法错误、逻辑错误和运行错误。语法错误:编译和链接阶段就能发现。逻辑错误:代码没问题,但不能达到预期目标,可以通过调试来解决。运行错误:在运行期间发生的错误,例如除数为 0、内存分配失败、数组越界、文件不存在等。C++异常机制就是为解决运行时错误而引入的。捕获异常捕获异常的语法为:try{ // 可能抛出异常的语句}catch(exceptionType variable){ // catch 告诉 try:你去检测一下程序有没原创 2021-08-31 11:34:47 · 296 阅读 · 0 评论 -
C++命令空间namespace的作用和使用解析
1、命令空间的作用?命名空间可最为附加信息来区分不同库中相同名称的函数、类、变量等。本质上,命名空间就是定义了一个范围。例如:一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。2、定义命名空间#include<iostream>using namespace std;namespace first_space{ // 第一个命名空间 void func(){...}}namespace second_space{/原创 2021-08-31 11:32:59 · 1286 阅读 · 2 评论