C++
C++相关语法及知识
幼、稚%
这个作者很懒,什么都没留下…
展开
-
认识C++的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛、最简单的设计模式。 其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享 懒汉模式 特点:不用的时候不会加载配置文件,只有到用的时候才会加载,也就是加载会有延迟 //定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。 class Singleton { private: //构造函数私有化 Singleton() {} //指向唯一实例的静态指针M_Instance,并且原创 2020-09-16 22:11:25 · 151 阅读 · 1 评论 -
C++多态总结
多态概念: 多种形态,完成某个具体行为,不同的对象完成时可能会有不同的效果 多态:看实际指向的实体 非多态:看类型 例如:微信抢红包 多态的定义与实现 1.构成条件 多态是在不同继承关系的类对象,去调用同一函数,产生不同的行为。 必须通过基类的指针或者引用调用虚函数。 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。 class Person { public: virtual void BuyTicket() { cout << "买票-全价" << endl原创 2020-09-07 10:47:05 · 178 阅读 · 0 评论 -
C++继承总结
继承的概念 继承机制是面向对象程序设计使代码可以复用的重要手段,它允许程序员在保持原有类特性的基础之上进行其他扩展,增加功能,这样产生的新类,称之为派生类。 继承呈现了面向对象程序设计的层次结构,体现了有简单到复杂的认知过程。 class Person{ public: void Print(){ cout << “name” << _name << endl; cout << “age” << _age << endl; } pro原创 2020-07-30 20:23:57 · 385 阅读 · 1 评论 -
vector模拟实现
#include<iostream> #include<string> using namespace std; template <class T> class Vector { private: T* _start;//首元素开始的位置 T* _finish;//最后一个元素结束的位置 T* _end;//空间的结束位置 public: Vector() :_start(nullptr) ,_fini原创 2020-06-20 21:50:15 · 120 阅读 · 0 评论 -
String类的模拟实现
#include<iostream> #include<string> using namespace std; class String { private: char* _str; size_t _size; size_t _capacity; public: //string迭代器:通过指针实现 typedef char* iterator; typedef const char* const_iterator; itera原创 2020-06-15 21:29:53 · 137 阅读 · 0 评论 -
C++——内存管理
示例 int globalVar = 1; static int staticGlobalVar = 1; void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof (int)*4); int* pt原创 2020-05-30 21:41:36 · 202 阅读 · 0 评论 -
C++——日期类实现以及六大成员函数
六大成员函数 构造函数 **功能:**在已有空间上初始化对象成员变量 1.如果没有显示定义,编译器会自动生成,如果定义了任何一个构造函数,编译器都不会再自动生成 2.构造函数支持重载 3.默认构造:无参、全缺省、编译器自动生成,这三者只能存在其一 4.创建对象时编译器自动调用 5.如果有自定义成员,构造函数会自动调用自定义成员的默认构造,如果自定义成员没有默认构造函数,编译不会通过 析构函数 **功能:**对象销毁之前,清理对象的资源,不是销毁对象 1.如果没有显示定义,编译器会自动生成 2.不支持重载,只原创 2020-05-26 17:40:38 · 432 阅读 · 1 评论 -
C++——引用
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 void TestRef(){ int a = 10; int& ra = a;//<====定义引用类型 printf("%d",&a); printf("%d",&ra);//与上面输出地址相同 } 引用特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 常引用 void Tes原创 2020-05-18 21:19:45 · 152 阅读 · 0 评论 -
C++——缺省参数、函数重载
缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 例 void TestFunc(int a = 0){ cout<<a<<endl; } int main(){ TestFunc(); // 没有传参时,使用参数的默认值 TestFunc(10); // 传参时,使用指定的实参 } 缺省参数分类 1.全缺省参数 void TestFunc(int a = 10, int b =原创 2020-05-18 21:10:05 · 195 阅读 · 0 评论 -
C++——命名空间
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。 普通的命名空间 // N1为命名空间的名称 namespace N1 { // 命名空间中的内容,既可以定义变量,也可以定义函数 int a; int Add(int left, int right){ return left + right; } } ...原创 2020-05-18 20:52:22 · 117 阅读 · 0 评论