![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ 编程基础
文章平均质量分 71
C++ 编程基础
爱吃红萝卜的小白兔
这个作者很懒,什么都没留下…
展开
-
C++ 类型转换
C语言中的类型转换比较松散,C++新增4个类型转换运算符,更加严格的显示类型转换,使转换的效率更加规范。原创 2024-01-08 21:10:14 · 415 阅读 · 0 评论 -
C++ 函数对象
/声明一个函数符, 输出数组中的每个元素public:Output out;return 0;原创 2024-01-08 09:30:17 · 417 阅读 · 0 评论 -
C++ 基础知识体系
基于自己的编程经验搭建的C++知识体系。原创 2024-01-04 22:01:20 · 493 阅读 · 1 评论 -
C++ extern 关键字
对于“在a.cpp文件中使用在b.cpp中定义的函数”这种场景,大家应该非常熟悉。一般会通过在a.cpp中#include "b.h"来解决这个问题。在某些情况下,可能b.cpp文件并没有对应的b.h头文件,这时就需要在a.cpp中使用extern关键字声明b.cpp中的函数。// 声明Utils.cpp中定义的display函数 extern int g_num;// 声明Utils.cpp中定义的全局变量g_num int main() {return 0;原创 2023-06-06 20:08:00 · 904 阅读 · 0 评论 -
C++ 名称空间
在C++中的名称可以是变量,函数,类以及类的成员。随着项目的增大,名称相互冲突的可能性也在增大。使用多个厂商的类库时,可能导致名称冲突。例如,两个库都定义了名为List,Tree和Node的类,但是定义的方式不兼容。用户可能希望使用一个库的List类,而是用另一个库的Tree类,这种冲突称为名称空间问题。C++标准提供了名称空间工具,以便更好的控制名称的作用域。原创 2023-05-16 17:40:42 · 304 阅读 · 0 评论 -
C++ 声明与定义
定义是为了给变量分配内存,可以为变量赋初值。int value;//声明 + 定义 struct Node {// 声明 + 定义 int left;int right;注意:全局变量或静态变量初始值为0,局部变量初始化为随机值x : y;函数只要有实现(存在函数体 { …… } )即为定义,否则为声明。可以这样理解:函数声明是说明函数是什么,函数定义是说明函数做什么。原创 2023-05-16 15:32:23 · 903 阅读 · 0 评论 -
C++ 内存模型
如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找;但如果头文件包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录。如果没有在那里找到头文件,则将在标准位置查找。因此,在包含自己的头文件时,应使用引号而不是尖括号。原创 2023-05-15 15:29:16 · 954 阅读 · 0 评论 -
C++ 函数重载
函数多态是C++在C基础上新增的功能,函数多态(函数重载)允许定义多个重名函数。函数重载的关键是函数的参数列表-也称为函数特征标。原创 2023-05-15 11:12:05 · 62 阅读 · 0 评论 -
C++ 内联函数
宏是预编译时的行为,内联是编译时的行为内联函数是真正的函数,参数传递时会进行类型检查;宏只是简单的进行文本替换,不进行类型检查。原创 2023-05-15 10:47:25 · 40 阅读 · 0 评论 -
C++ 宏定义
一、宏定义原创 2023-05-11 15:47:47 · 5202 阅读 · 0 评论 -
C++ 函数指针
函数指针是指向函数的指针变量。因此函数指针本质上是一个指针变量,只不过该指针变量指向函数。指针变量也可以指向整型变量、字符型、数组,也可以指向函数。C语言中,每一个函数都有一个入口地址,函数指针就指向函数的入口地址,可以通过函数指针来调用函数。输出结果。原创 2023-05-11 11:30:17 · 65 阅读 · 0 评论 -
C++ 函数模板与类模板
继承与包含并不总是能解决重用代码的需要。例如,Stack类与Queue类都是容器类,容器类设计用来存储其他对象或数据类型。可以定义专门用于存储double值或string对象的Stack类,除了保存的对象类型不同外,这两种Stack类的代码是相同的。然而,与其编写新的类声明,不如编写一个泛型(即独立于类型的)栈。然后将具体的类型作为参数传递给这个栈,这样就可以使用通用的代码生成存储不同数据类型的栈。模板提供参数化类型,即能将类型名作为参数传递给接收方法来建立类或函数。原创 2023-04-18 21:21:02 · 593 阅读 · 0 评论 -
C++ 指针与引用
一、引用1、什么是引用?C++新增了一种复合类型–引用变量。引用是已定义变量的别名,使用引用变量的主要的用途是作为函数的参数。通过将引用变量用作参数,通过形参就可以对原始的数据进行修改。这样除指针之外,引用也为函数处理class与struct提供了一种非常方便的途径。C++新增的这种特性也是对C语言的超越,C语言只能按值传递,如果直接传递对象会调用类的拷贝构造函数。2、声明引用变量C与C++使用&来获取变量的地址。C++给&赋予了另外一个含义,将其用来声明引用,例如:cla原创 2021-11-11 22:30:03 · 444 阅读 · 0 评论 -
C++ 内存分配与内存对齐
一、C++程序内存分配C/C++程序编译时内存分为5大存储区栈区,由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。通俗来讲就是函 数中的变量参数等等,即{}中的内容。堆区,一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方 式倒是类似于链表。通俗讲就是动态内存分配,全局区(静态区),—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(RW),原创 2021-11-10 14:45:55 · 2309 阅读 · 2 评论 -
C++ 类使用
一、C++ 类使用1、类成员的初始化顺序下面学习下,C++类成员的初始化顺序,例如:class A{private: int n1; int n2;public: A():n2(0),n1(n2+2){} void Print(){ cout << "n1:" << n1 << ", n2: " << n2 <<endl; }};int main(){ A a; a.Print(); // 输出结果原创 2021-11-09 10:26:24 · 8760 阅读 · 0 评论 -
C++ 类默认成员函数
一、类默认成员函数在原有4个特殊成员函数(构造函数、析构函数、复制构造函数、复制赋值运算符)的基础上。C++11又新增了两个:移动构造函数与移动赋值运算符。构造函数与析构函数前面已经介绍过,下面分别介绍其余四个函数1、复制构造函数复制构造函数(也可以叫拷贝构造函数)是一种特殊的构造函数,它在创建对象时,使用同一类中之前创建的对象来初始化新创建的对象。如果在类中没有定义拷贝构造函数,编译器会自行定义一个。下面是一个复制构造函数常见的结构:classname (const classname &原创 2021-11-08 10:59:41 · 165 阅读 · 0 评论 -
C++ 多态
一、静态编联与动态编联1、什么是静态编联与动态编联?将源代码中的函数调用解释为执行特定的函数代码块被称为函数编联。在C语言中这很简单,因为每个函数名都对应一个函数。在C++中,由于函数重载的原因,这项任务更复杂。编译器必须查看函数名与函数参数才能决定调用哪个函数。C/C++编译器可以在编译过程完成这种编联。在编译过程中进行编联称为静态编联(static binding),又称为早期编联。然而,C++中的虚函数使这项工作变的更加的复杂。使用虚函数时,使用哪一个函数不是在编译器确定的,因为编译器不知道用户原创 2021-11-05 09:44:26 · 651 阅读 · 0 评论 -
C++ 继承
一、继承1、继承相关概念面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。继承性是面向对象程序设计最重要的特征,面向对象技术强调软件的可重用性(software reusability),通过继承机制可以很好的解决软件重用问题。继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父原创 2021-11-04 10:40:05 · 473 阅读 · 0 评论 -
C++ 封装
一、封装1、面向过程与面向对象面向过程:面向过程是一件事“该怎么做”,是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可。面向对象:面向对象是一件事“该谁来做”,然后那个“谁”就是对象。是以对象为核心,关注需要哪些对象,对象需要具备哪些功能,然后创建出解决问题的对象,利用对象调用相应的方法即可。采用OOP方法时,首先从用户的角度考虑对象,描述对象所需的数据以及描述用户与数据交互所需的操作。完成对接口的描述后,需要确定如何实现接口及存储数据。...原创 2021-11-02 14:40:01 · 2068 阅读 · 1 评论 -
C++ typeid关键字详解
一、C++ typeid关键字详解1、typeid的用法typeid 运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性:1)对于基本类型(int、float 等C++内置类型)的数据,类型信息所包含的内容比较简单,主要是指数据的类型。2)对于类类型的数据(也就是对象),类型信息是指对象所属的类、所包含的成员、所在的继承关系等。注意:typeid是操作符,不是函数,这点与sizeof类似typeid 的操作对象既可以是表达式,也可以是数据类型,下面是它原创 2021-07-30 20:32:54 · 2686 阅读 · 0 评论 -
C++ 移动构造与移动赋值运算符
一,为何需要移动语义?我们定义了下面这个Useless类class Useless{private: string name; char *p;public: Useless(); Useless(string name); Useless(const Useless &f); Useless operator+(const Useles原创 2017-04-24 10:24:58 · 4330 阅读 · 2 评论 -
C++ 面向对象五大原则
一,面向对象五大原则1.1,理解设计模式与设计原则 软件设计原则:原则为我们提供指南,它告诉我们什么是对的,什么是错的。它不会告诉我们如何解决问题。它仅仅给出一些准则,以便我们可以设计好的软件,避免不良的设计。 软件设计模式:模式是在软件开发过程中总结得出的一些可重用的解决方案,它能解决一些实际的问题。一些常见的模式,比如工厂模式、单例模式等等。 封装、继承、多态只...原创 2018-08-05 17:56:46 · 5442 阅读 · 2 评论 -
C++ 静态链接库与动态链接库
一,函数库库是别人写好的现有的、成熟的、可以复用的代码。在Windows中常用的库有两种一种是静态库(.lib),另一种是动态库(.dll)。二,静态链接库静态库在程序编译时会被连接到目标代码中,静态库的代码在编译过程中已经被载入可执行程序, 程序运行时将不再需要该静态库,因此体积大。优点:代码装载速度快,执行速度略比动态链接库快。缺点:静态链接库是将全部库中的原创 2017-07-20 16:28:38 · 1022 阅读 · 0 评论