自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WYaoHui的博客

。。。

  • 博客(17)
  • 收藏
  • 关注

原创 C++STL:模拟实现string类

在上一篇中,我们细致说明了C++标准库中string类的常用接口及其功能。C++STL:string类的常用接口及说明为了更加深入的理解各个接口的使用及底层原理,我们现在就来自己模拟实现一下string类。class String{public: typedef char* Iterator;public: String(const char* str = "") { if...

2019-08-20 21:59:24 381

原创 C++STL:string类的常用接口及说明

我们都知道,在C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库还提供一些库函数,供我们使用,但是这些库函数与字符串是分离的,而且底层空间也需要用户自己管理,较为麻烦。所以C++在标准库中提供了string类,大大方便了我们对字符串的操作。接下来我们就来看看string类的常见接口及使用方法。1.string类对象的常见构造函数名功能string()...

2019-08-20 00:07:31 553

原创 单例模式:饿汉式与懒汉式

单例模式在介绍单例模式前,我们先来理解一下设计模式的概念以及使用设计模式的目的:设计模式:就是一套被反复利用、众人知晓、经过分类的、代码设计经验的总结。使用其目的:就是为了代码的可重用性、让代码更容易被他人理解、保证代码可靠性。作为设计模式的一种,单例模式自然也具有以上特点,那么现在我们就来说一下单例模式的概念及作用:单例模式:即一个类只能创建一个对象,作用:保证系统中该类只...

2019-08-16 23:32:38 220

原创 如何设计一个只能在堆上或只能在栈上创建对象的类

一、只能在堆上创建对象的类要实现这样一个类,我们首先应该清楚:类在创建对象时,一种是通过调用构造函数创建,另一种则是通过调用拷贝构造函数完成对象的创建。基于上面的前提,要实现只在堆上创建对象,我们的方法是:1.将类的构造函数私有,拷贝构造声明为私有,防止别人调用拷贝在栈上创建对象,2.提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建。class OnlyHeap{pu...

2019-08-16 22:00:36 488

原创 malloc/free 和 new/delete 的区别

在上一篇中,写到了C++的内存管理方式:new/delete操作符。C++内存管理方式:new/delete为了更进一步理解new/delete的定义及特性,将new/delete 与 C语言中的动态内存管理方式:malloc/free进行对比:相同点:1.都是从堆上申请空间,并且需要用户手动释放。不同点:1.malloc/free 是函数;new/delete 是...

2019-08-15 17:41:50 171

原创 C++内存管理方式:new/delete

一、new/delete在C语言中,我们可以通过malloc/free来进行内存管理,C++中也可以继续使用,但是在有些情况下,无法得到我们想要的结果,而且使用起来较为麻烦。因此C++便提出了自己的内存管理方式:new/delete操作符,来进行动态内存管理。new / delete:用于申请和释放单个元素的空间,new[] / delete[]:用于申请和释放连续的空间。void ...

2019-08-15 17:17:00 208

原创 C++突破封装的方式之一:友元类、内部类

一、友元友元分为:友元函数和友元类。在上一篇中,介绍到了C++突破封装的方式之一,友元函数,这一篇,我将对友元类,以及类似的内部类进行介绍。C++突破封装的方式之一:友元函数1.友元类特性:友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。友元关系是单向的,不具有交换性。即:若有两个类A和B,在A类中声明B类为其友元类,那么就可以在B类中直接访...

2019-08-15 15:44:04 304

原创 C++突破封装的方式之一:友元函数

友元友元分为:友元函数和友元类。友元提供了一种突破封装的方式,有些时候可以为我们提供便利,但是友元会增加耦合度,破坏封装性,所以友元不宜多用。友元函数在讨论友元函数之前,我们先来看一下下面这段代码:class Date{public: Date(int year, int month, int day) : _year(year) , _month(month) ,...

2019-08-14 22:58:04 436

原创 C++类的6个默认成员函数

一、构造函数1.概念:名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初 始值,并且在对象的生命周期内只调用一次。2.特性:虽然名字叫构造,但其主任务并不是开辟空间创建对象,而是初始化对象。 -函数名与类名相同, -无返回值, -对象实例化时编译器自动调用对应的构造函数, -构造函数可以重载, -通过无参构造函数创建对象时,对象后面不用跟括号,否则就...

2019-08-10 22:43:42 430

原创 C++类的访问限定符、类的大小计算、this指针

一、类的访问限定符1.类的访问限定符分为三种: - public - private - protected 注: - public修饰的成员在类外可以直接被访问,而private和protected修饰的成员在类外不能 直接被访问; - 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止; - class的默认访问权限为private,stru...

2019-08-09 23:39:06 583

原创 C++中的命名空间、缺省参数、函数重载、引用、内联函数、auto、范围for、nullptr

C++的一些简单知识这几天看了一些有关C++的基础知识点,自己大致总结如下:一、命名空间1.在定义命名空间时,需要使用 namespace 关键字,后面跟命名空间名称,然后接一对{},{}中即为命名空间的成员;2.命名空间是可以嵌套的,而且同一个工程中也可以存在多个名称相同的命名空间,编译器最终会合成同一个命名空间;3.通俗来讲,一个命名空间就是定义了一个新的作用域,命名空间中的所有内...

2019-04-11 22:12:21 372

原创 浅析函数的调用过程,栈帧的创建与销毁

为了能够了解函数的调用过程,我们先看一段代码:#include <stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10;

2018-12-08 19:45:11 339

原创 c语言-用数组知识简单实现扫雷小游戏

最近看了有关数组的一些知识,在上一篇里,写了个三子棋,今天再简单实现一下扫雷小游戏:游戏的菜单以及程序主体部分(test.c):相关头文件的包含,所需宏的创建及所用函数的声明(game.h):所用函数的实现(game.c):三大部分代码的大致解释:test.c部分:game.h部分:game.c部分:游戏的菜单以及程序主体部分(test.c):#incl...

2018-07-25 09:30:56 1092 3

原创 c语言-简单实现三子棋小游戏

这几天看了有关数组的一些知识后,便尝试用数组做了个三子棋小游戏,并扩展到了多子棋:游戏的菜单选择及程序主体部分(test.c):头文件包含,宏的创建及所用函数的声明(game.h):所用函数的实现(game.c):游戏的菜单选择及程序主体部分(test.c):#include "game.h"int n = 0; //n为输入数,玩家输入几,便可以玩几子棋。//游...

2018-07-24 22:28:26 568

原创 详解数组计算题

今天看了一些有关数组的运算题,大致总结如下,希望各位看过以后,对数组能够有更好的理解://一维数组int arr[] = {1, 2, 3, 4};printf("%d\n", sizeof(arr)); //16printf("%d\n", sizeof(arr + 0)); //4printf("%d\n", sizeof(*...

2018-07-23 22:52:23 357

原创 数组的一些简单知识

今天看了一些有关数组的简单知识,自己便概括总结如下:一维数组的创建,初始化,使用以及在内存中的存储创建 ,初始化使用内存中的存储一维数组的指针访问二维数组创建,初始化使用内存中的存储数组作为函数参数数组名代表整个数组的两种情况一维数组的创建,初始化,使用以及在内存中的存储创建 ,初始化1.数组创建时,[ ]中必须是常量,不可以使用...

2018-07-22 23:32:43 255

原创 c的操作符

操作符的分类1.算数操作符2.移位操作符左移操作符 <<右移操作符 >>3.位操作符4.赋值操作符5.单目操作符6.关系操作符7.逻辑操作符8.条件操作符9.逗号表达式10.下标引用,函数调用和结构成员操作符的分类1.算数操作符 +加 -减 *乘 /除 %取模 (1)%操作符只

2018-07-21 21:33:44 251

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除