![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
天天向上c
这个作者很懒,什么都没留下…
展开
-
C++ 模板知识点
模板引入泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。我们知道在C++中可以通过重载实现相同函数名,形参类型不同来完成泛型编程。但是存在代码复用率较低,可维护性较差问题,编写了大量重复代码。因此C++中通过引入模板来实现泛型编程。也就是说告诉编译器一个模子,让编译器根据传入实参的类型来生成相应的代码。优点:1 模板复用了代码,节省资源,更快的迭代开发,STL因此而生。2.增强了代码的灵活性,无过多重复代码缺点:1.代码编译时间变长。2. 出现错误不容定位。模板分类模原创 2020-08-29 12:00:45 · 383 阅读 · 0 评论 -
C++String(模拟实现,相关函数,深拷贝,浅拷贝,写时拷贝(引用计数) )
stringstring类对象的常见构造void Teststring(){ string s1; // 构造空的string类对象s1 string s2("hello bit"); // 用C格式字符串构造string类对象s2 string s3(s2); // 拷贝构造s3}容量操作size 返回字符串有效字符长度length 返回字符串有效字符长度capacity 返回空间总大小empty 检测字符串释放为空串,是返回true,否则返回falseclear 清空有原创 2020-08-07 16:41:33 · 178 阅读 · 0 评论 -
C++内存管理(new,delete,malloc,free)
C++内存管理方式C语言内存管理方式在C++中可以继续使用。C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[]在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator原创 2020-08-07 14:07:45 · 153 阅读 · 0 评论 -
C++ 类(static, const,内联函数等)
thisC++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。this指针的类型:类型 *const只能在类的“成员函数”的内部使用this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针。类的6个默认成员函数任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。构造函数主要完成类的初始化原创 2020-08-07 11:38:00 · 211 阅读 · 0 评论 -
C++ 重载、覆盖、隐藏的区别
Overload(重载)在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数列表(包括类型、顺序不同),即函数重载。因此满足函数重载有以下几个条件:1. 范围相同(同一个类中)。2. 函数名相同。3. 参数列表,函数形参不同。4. virtual 关键字可有可无。class Base{public: void fun(){} void fun(int, int){}}; Override(覆盖):是指派生类函数覆盖基类函数,是虚表的覆盖 也就是多态。原创 2020-07-09 12:23:44 · 179 阅读 · 0 评论 -
C++ c_str()函数
C_str函数原型 const E * c_str() const该函数返回 const char* 指针可以将一个string类型的字符串转换成为常规c语言中的字符串 eg: string s = "hello world"; char* str = s.c_str(); cout<< str <<endl; char *s1 = "hello world"; cout << s1 << endl;一原创 2020-06-22 19:09:12 · 448 阅读 · 0 评论 -
C++ 继承
继承1. 概念:继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。2. 继承格式class Person{ public: void Print() { cout << "name:" << _name << e原创 2020-06-22 12:19:09 · 105 阅读 · 0 评论 -
C++ IO流部分知识
<正确>1. 输入输出缓冲区可以屏蔽掉低级IO的实现。2. cout是标准输出流对象,应对屏幕,cin是标准输入流对象,应对键盘。3. 输入输出缓冲区可以实现内容的“行”读取。4. cin如果要提取具有空格的整体字符串,需使用getline()方法。5. 文件操作分为文本文件和二进制文件。6. 文件的读写有顺序读写也有随机读写。7. 文件操作一般需要经过 1.定义文件流2.打开文件3.对文件读写操作4.关闭文件。<错误>1. IO中cerr是错误输出流对象,具有缓冲原创 2020-06-20 12:07:32 · 155 阅读 · 0 评论 -
C++ 实现二叉树的层次遍历
<题目>给定一棵二叉树,实现其层次遍历。方法:利用队列#include<iostream>#include<queue>using namespace std;typedef struct BinTreeNode{ int data; struct BinTreeNode* leftchild; struct BinTreeNode* rightchild;}BinTreeNode;void LevelOrder(BinTreeNode* t)原创 2020-06-11 19:30:07 · 585 阅读 · 0 评论 -
C++ 模式实现vector
vector模拟实现#include<vector>#include<iostream>#include<array>using namespace std;namespace my_vector{ template<class T> class vector { public: typedef T* iterator; typedef const T* const_iterator; public: //1. 空构造原创 2020-06-22 10:48:55 · 108 阅读 · 0 评论