![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 51
C/C++进阶学习笔记
浔汐
菜鸡Jvav攻城狮
展开
-
C++_String类的简单实现
第一次实现一个String类,没有iterator迭代器或者内存分配器等等,只是实现了简单的字符串操作并把它们写入到一个类中,重载了常见运算符提供了最简单的功能,但我认为,如果你能实现下面功能,其他功能的实现都能做到,以下代码仅供参考,可能不是最优化写法,但能跑就行…#include <iostream>using namespace std;namespace yadong{ class MyString { private: char *_str; size_t原创 2021-07-12 11:14:05 · 182 阅读 · 0 评论 -
深入C++(4)
深入C++(4)1.局部域变量覆盖 局部域内的变量名解析过程是 从内向外 的,从当前域开始查找该变量的声明,如果找到了就会解析该变量名,如果找不到,就会进入包含当前域的域中去寻找这个变量名. 因此,如果在全局域中定义了一个变量,而又在某个局部域定义了一个与之变量名相同的变量,那么根据变量名的解析过程,在当前局部域找到了这个变量的声明定义,然后就会按照局部域的定义来解析这个变量,而全局域中的变量被抛弃,当作不存在.因此在这个局部域中,会形成变量覆盖.2. 数组的动态分配 2.1 用new分配一原创 2021-07-11 17:32:33 · 89 阅读 · 0 评论 -
深入C++(3) - 函数指针
深入C++(3)函数指针1.1 初始化与赋值. 只有当赋值操作符左边指针的参数表和返回类型与右边函数或指针的参数表和返回类型完全匹配时,初始化和赋值才正确; 如下面操作可获得一个pFun的函数指针:int testFun(const int&a, const int &b);int(*pFun)(const int&, const int &) = testFun; 使用这个函数指针与普通调用函数名方法一致:pFun(1,2);1.2 使用type原创 2021-07-10 22:43:32 · 103 阅读 · 5 评论 -
深入C++ (2)
深入C++ (2)1.const引用 const引用可以用不同类型的对象初始化(只要能从一种类型转换到另一种类型即可),也可以是不可寻址的值,如文字常量.例如:double a = 9.9;const int &b = a;cout << "b = " << b << endl; 最后运行结果会是 b = 9, 当将一个引用初始化为一个const对象的地址时,此时使用非const引用定义是非法的,将导致编译时刻错误,如下面:const in原创 2021-07-08 23:49:18 · 103 阅读 · 3 评论 -
深入C++ (1)
深入C++本文主要细数C++中常常容易让人忽略的或者说十分有用的东西.1. int a = a 不可行! 理论上,在对象的定义中,当对象的标识符在定义中出现后,对象名马上就是可见的,因此用对象初始化它自己是合法.然而,在vs2013上测试了一下,直接报错a未初始化…2. 指针与内存 指针的类型可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元.3. 同时定义多个指针 float *var1, var2 var1是float*指针变量,而var2只是一个fl原创 2021-07-07 12:41:24 · 134 阅读 · 0 评论 -
C++写贪吃蛇源代码
源码如下:#include <iostream>#include <conio.h>#include <vector>#include <Windows.h>#include <time.h>#include <easyx.h>using namespace std;//节点的数据struct node{ int x, y, r;};char dir = 's';//方向vector<node>原创 2021-06-02 23:59:09 · 1469 阅读 · 7 评论 -
C++用类封装动态数组
动态数组是一个在数组增加元素,而数组空间大小又不足够时自动开辟新的更大的内存空间,然后将原来的内存拷贝过去的一种比较聪明的数组.在这里使用一个MyArr类来创建我们所需要的动态数组,存的数组我们自定义一个Student类.1.创建要存的数据类型Student类1.声明一个学生类作为实例,类中存一个id和一个name:class Student{ int id; string name; }2.在Student类中直接声明并定义设置id,name的函数:public: void setSt原创 2021-06-02 23:55:39 · 640 阅读 · 0 评论 -
静态友元常量成员
静态友元常量成员一、静态成员1、知识点介绍 1、静态成员,指的是在C++类中声明成员时,可以加上static关键字,这样声明的成员叫静态成员,静态成员分为静态数据成员和静态函数成员两种2、静态数据成员定义class node{ public: static int id;//静态数据成员定义}int node::id=10;//静态数据成员类外初始化3、静态数据成员的特点 1、类中静态数据成员,所有对象都共享该数据,只有一份内存在内存中 2、类中的静态数据成员,必须要在类原创 2021-06-02 22:52:18 · 141 阅读 · 0 评论 -
C++面向对象-类
C++面向对象-类1.知识点介绍:1.面向对象的特点 1.面向对象将数据和行为结合在一起,共同来表达一个数据. 2.在面向过程中,数据和行为是分开的,当问题比较复杂或者设计多开发,那么会导致拓展和维护很困难,而面向对象能解决这个问题,问题会被分解为一个个的对象,每一个对象有独立的数据和行为,修改或拓展某一个对象时并不会影响到其他对象. 3.面向对象的封装性、继承及多态. ①封装:封装就是将属性(数据)私有化,提供公有的访问(行为)访问私有属性.通过封装可以对对象属性进行存取限制,提高了原创 2021-05-23 13:56:06 · 122 阅读 · 0 评论 -
C到C++基础
C到C++基础1.new和delete (1)new的作用类似于C语言中malloc的申请内存,delete等价于C语言free. 如:int *p = new int; //申请一个内存*p = 100;printf("%d\n",*p);delete p; //释放一个内存 (2)用new申请一个内存时,可以初始化,多个内存不可以. 如:int *p = new int(10);printf("%d\n",*p);delete p;(3)内存申请失败的时候原创 2021-05-23 12:17:39 · 212 阅读 · 0 评论 -
C语言中链表的创建(本文中采用的尾插法)
C语言中链表的创建(本文中采用的尾插法)声明:此文链表采用的增删改查函数皆以传递结构体中的数据为主,传递结构体的指针后续我将另做文章.结构体创建一个链表,首先就要创建一个结构体,来承载我们的数据;因为本文中采用的是尾插法,结构体创建如下:typedef struct link{ int data; struct link* next;//用于连接下一节点 }link;头尾指针创建好结构体后,我们需要头尾指针,用于后续一系列的增删改查操作,头尾指针创建如下://声明并定义头尾指针,用原创 2020-09-29 17:14:38 · 454 阅读 · 0 评论 -
C语言链表的增删查改(利用指针传递实现)
链表链表的运用非常广泛,而对于一个链表的创建,常见的方法有头插法和尾插法,而对于链表的增删改查的函数又可以以直接接受数据为主和接受节点指针为主,上一篇文章中我就接受数据为主做了一个尾插法的链表完整源代码,这次就利用传递节点的指针为主,重新构建一个能实现链表的四个操作的函数.(本人作为一个初学者,此篇文章主要以记录学习过程为主,不足之处或有错误的地方往大佬下手轻点).首先创建结构体typedef struct link{ int a; struct link* next;}link;创建头原创 2020-09-30 20:15:29 · 1119 阅读 · 0 评论