C++
文章平均质量分 85
a_struggling_monkey
Do more
展开
-
C++深浅拷贝详解(传统现代写法)
●浅拷贝: 顾名思义,浅拷贝只是将对象的值拷贝过来。 如果没有显示实现构造函数或是拷贝构造函数,那么编译器会默认以浅拷贝的方式自动生成。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<Windows.h>#include<string.h>usi...原创 2018-11-24 21:00:19 · 1211 阅读 · 0 评论 -
菱形继承那些事
继承是C++三大特性之一,而继承又分为单继承和多继承,将单继承和多继承组合起来就成了复杂的菱形继承,本文重点讲菱形继承带来的问题和如何解决该问题。●回顾知识:单继承:一个子类只有一个直接父类时称这个继承关系为单继承。多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承。●菱形继承一、什么是菱形继承?菱形继承是多继承的一种特殊情况,由单继承和多继承构成,...原创 2019-07-06 14:43:44 · 140 阅读 · 0 评论 -
C/C++内存管理
目录一、C/C++中的内存分布二、C/C++中的内存分配方式三、C语言中动态内存管理四、C++中动态内存管理五、malloc/free和new/delete的异同点一、C/C++中的内存分布一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址...原创 2019-04-24 22:01:54 · 147 阅读 · 0 评论 -
实现一个Date类
日期类是一种很常用的类,但是C++中没有封装,因此就要我们手动封装。创建类一定要生成其默认的成员函数:构造函数,拷贝构造函数,运算符重载,析构函数本文实现的日期类有以下功能: 1.判断两个日期的大小关系 2.日期加减天数 3.日期加等减等天数 4.日期的前置后置自加和自减 5.两个日期相差天数 6.输出日期日期类的声明:#pragma o...原创 2019-04-24 17:55:53 · 294 阅读 · 0 评论 -
C++笔记:缺省参数与函数重载详解
一、缺省参数1.概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。(我其实把它理解为是一种备胎行为)void Test(int a = 0){ cout<<a<<endl;}int main(){ Test(); // 没有传参时,使用参数的默认值0 Test(10); /...原创 2019-04-14 16:37:24 · 196 阅读 · 0 评论 -
内存管理有关题目
一、判断变量的存储位置看一道关于代码的题:int globalVar = 1; static int staticGlobalVar = 1; void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; ...原创 2019-04-25 21:31:30 · 237 阅读 · 0 评论 -
论智能指针的发展史
RAII:1.RAII的由来: 我们写的有关资源管理的代码如果出现bug,会导致下面的问题:●malloc出来的空间,没有进行释放,存在内存泄漏的问题。●异常安全问题。如果在malloc和free之间如果存在抛异常,那么还是有内存泄漏。这种问题就叫异常安全。 也许会有人说,那我写代码的时候小心点就行了,但是天算不如人算,当工程量浩大的时候总避免不了这样那样的问...原创 2019-04-12 12:02:09 · 201 阅读 · 0 评论 -
异常处理
一、C语言异常处理方式1. 终止程序,如assert,缺陷:代码直接崩溃难以接受。如发生内存错误,除0错误时就会终止程序。2. 返回错误码,缺陷:需要自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误。void Reverse(char* src,char* dst){ assert(src); assert(dst); ...原创 2019-04-08 22:25:42 · 115 阅读 · 0 评论 -
C++四种强制类型转换
一、什么是强制类型转换?简单来说强制类型转换就是将某一类型的变量强转成另一种类型的变量。二、C语言中的强制类型转换?1.隐式类型转换:所谓隐式,就是我们没有写出来,而是编译器自己去识别。需要注意的是,隐式类型转换只能转换相近类型的,比如int/char/double这些都可以隐式类型转换,但对于int和int*这种不相关的类型就需要强制类型转换。2.显式类型转换:对于不相关类型,需...原创 2019-04-08 20:35:44 · 444 阅读 · 0 评论 -
单例模式—懒汉和饿汉
一、什么是单例模式? 顾名思义,一个类只能创建一个对象,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。比如在某个服务器中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。二、怎么实现? 既然只能...原创 2019-03-18 17:17:53 · 287 阅读 · 0 评论 -
C++模板总结——模板特化与类型萃取
一、模板特化 在原模板的基础上对特殊类型进行特殊化。分为函数模板特化和类模板特化。二、函数模板特化特化步骤: (前提要有一个基础的函数模板) //1.template后加<> 2.函数名后加<指定type&> 3.形参表要和基础类型一样//基础模板template<class T>bool IsEqual(...原创 2019-03-09 09:04:39 · 248 阅读 · 0 评论 -
C++模板总结—实例化和特化
一、什么是模板? 照猫画虎,照葫芦画瓢,所谓模板,就是代码的基本结构和内容,但该代码与类型无关,提高代码的复用。模板是泛型编程的基础。模板分为函数模板和类模板。二、函数模板1.函数模板的概念:该函数模板与类型无关,根据实参类型产生特定的函数版本2.格式:template<typename T1,typename T2,...>返回值类型 函数名(参数...原创 2019-02-08 23:49:44 · 1218 阅读 · 0 评论 -
图解多态原理
●虚函数表:class Base{public: virtual void Func1() { cout << "Func1()" << endl; }private: int _b = 1;};void test(){ Base b; cout<<sizeof(b)<&...原创 2019-07-06 17:06:46 · 306 阅读 · 0 评论