4 fl2011sx

尚未进行身份认证

我要认证

程序猿,代码狂热爱好者。外加骨灰级果粉

等级
TA的排名 11w+

C++的堆区使用以及智能指针

Hello亲们!逗比老师又回来啦!今天我们的话题是C++11中的智能指针。 我们知道,指针,一直以来在C语言当中就占据着统治地位,逗比老师也曾经说过,如果你不会指针,那么你就不要说你会C语言。而C++作为C的超集,自然,也少不了使用指针。但是,由于类的加入,它的构造和析构相比标准类型都要复杂很多。利用普通的指针来管理对象有一些时候就会显得不是很方便,而且,我们可能会在代码中大量出...

2020-01-12 01:40:50

C++11中的右值引用(对比左值引用和常引用)、移动构造函数和引用标识符

Hello!各位同学们大家好!逗比老师最近说起来还是挺尴尬的,为什么这么说呢?因为以前我对自己的C++水平还是相当自信的,经常以“精通”来自我评价。但是最近发现自己好像对C++11当中很多特性还是一知半解,有的甚至完全没听过。实在是惭愧啊。虽然说C++11也是几乎10年前的产物了,但是由于这次大更新已经完全改变了C++这门语言的整体画风了,所以至今仍然值得我们去仔细研究。否则总感觉自己写的...

2019-09-15 11:18:23

C++模板和模板特例(防坑指南)

大家好啊!逗比老师又和大家见面了!今天要给大家分享的是C++中的模板。不过并不是基础教程,而是以“避坑”为主。所以呢,可能更适合有一定C++基础的同学。当然了,如果你正在被这个恶心的C++模板困扰,那么,你来对地方了! 那么首先,我们举一个栗子给大家吃(呸~~给大家听)。假如我们要做的事,是接受一个变量作为圆的半径,然后返回圆的面积。(emmm...这里栗子很逗比,原谅我实在想不...

2019-09-06 23:26:07

谁说C语言不能面向对象(之二:封装)

从这节开始,我们就要正式开始用C语言实现面向对象了。不过,受限于C语言的语法,实现OO还是需要很多编程技巧的。在此之前,我想先介绍一种可以算得上是捷径的方法吧。 其实用C语言来实现OO,我们并不是第一个。说起来,这也算挺成熟的技术了,成熟到都已经过时了。有一个很著名的程序语言,就是利用C语言,来实现OO的。这就是大名鼎鼎的Objective-C,苹果公司曾经的御用开发语言,直...

2019-03-02 00:59:39

谁说C语言不能面向对象(之一,前言)

看到题目,我相信一定有很多人觉得,嗯,我确确实实是个逗比。各种权威资料上写得非常清楚,C语言是面向过程的语言,C++,Java,OC,Python,JS等这些才是面向对象的语言。这个逗比,竟然觉得C可以面向对象,看来他真的是个逗比。 所以我在此先声明一下我起这个标题,以及,写这个系列文章的初衷。我并不是挑战权威,说C是面向对象的语言。确实,C的确是面向过程的语言,其中并没有包括任...

2019-03-01 22:03:40

逗比老师带你搞定C语言指针

哈喽!各位同学们大家好哇!逗比老师又回来了!好久都没有见到大家了真是想死我了! 最近呢,我有一个亲戚,还在读大学,正在学C语言,然后他在我的博客上看到了我之前写过的C教程,结果没有几篇就戛然而止了,于是就攒了很多问题来问我。这里给大家抱歉哈,真的不好意思,逗比老师实在是太忙了,顾不上给大家更新详细的C教程,这个后面慢慢来。不过有些重要的知识点还是可以单独拉出来给大家重点攻克一下的...

2019-02-26 22:17:26

Swift和C/Objective-C混编超详解

    文章可能写得有点晚了,Swift语言已经诞生很久的时间了,现在它已经挤掉了OC很大的市场了,但是,总是存在很多老项目,或者是第三方库还没有完全翻译成Swift,因此,混编还是需要的。虽然现在详解可能有点晚,不过还是希望能写一篇关于混编的详细讲解,方便那些遇到困惑的童鞋学习和查阅。    无论是在OC工程里插入Swift,还是在Swift工程里插入OC,其实都没什么区别,因为Swift编...

2018-11-18 01:37:11

macOS开发中网络连接或数据库连接收到错误“Operation not permitted”的解决方法

    在给出解决方案之前,我一定要好好吐槽吐槽,网上对于原生态的macOS开发的资料实在实在是太少了,关于这方面的问题在网上怎么搜都搜不出来,唯一的参考资料就是苹果开发者官网,但是对于我们大多数英语不是很好的开发者来说,阅读起来难度太大,而且,针对一些配置之类很细节的问题,在上面又没办法定位到,因为它只给出的是每个模块如何使用,却没有给出在什么样的场景下遇到什么样的问题应该如何解决。    ...

2018-04-25 13:25:31

sqlite.swift应用简介

SQLite3是一款非常轻便易用并且开源的嵌入式数据库,而SQLite3官方所提供的API接口是用C来提供的,如果用swift进行macOS或是iOS开发的话,就会很不方便,因此有一个国外的大神用swift封装了SQLite提供的API,并且分享在了GitHub上,称之为sqlite.swift,并且最新版本也使用了swift3的语法。原版的说明文档在此:https://github.com/st

2017-06-22 11:13:53

macOS开发中NSWindow, NSWindowController, NSView, NSViewController的关系

macOS使用的Cocoa框架,的确没有iOS使用的Cocoa Touch那么智能好用。有些地方逻辑很奇怪,还有一些看似很正常的功能它却没有提供,还需要自定义。这里就有一个很头疼的问题,关于这四个类的问题,他们之间到底是什么关系,如果摆脱了storyboard如何用代码实现?今天就来简单介绍一下。Xcode所提供的默认模板包括一个WindowController,还有一个ViewContr

2017-06-14 23:32:16

在macOS开发中使用Touch Bar

苹果在2016年秋天发布了新款MacBook Pro,其中有一个新的功能就是用Touch Bar来代替了传统的功能键(F1-F12),它功能强大,开发者可以将其设计成各种样式,并允许用户自定义,为用户和笔记本电脑之间的交互添加了新的方式。个人用过之后,还是非常不错的,尽管它实现的功能可以用快捷键或是鼠标操作来代替,但是在实际使用中,确实是直观并且方便了许多。    当然,我们并不只能是用用就罢

2017-06-09 02:03:21

009-彩色的显示器

上次讲到了引用C语言开发的原因以及如何使用C语言与之前的汇编头结合,这次,正式开始C语言的开发。       由于我们已经指定了C语言编写的入口函数为OSMain(),那么,就从这个函数开始写吧。既然要写一个函数,我们首先得确定这个函数的参数和返回值类型。如何确定呢?那得看谁会来调用这个函数,又想从这个函数里获得点什么。由于我们是将编译好的这个程序和之前写的汇编头相拼接的,那么,调用这个函数的

2017-03-09 00:02:10

008-C语言开发的开始

上次介绍了如何进入保护模式以及完成程序的跳转,那么这一次我们就将转向高级语言编写主要的程序代码。但是在这之前我们必须考虑一个问题,那就是在汇编语言中,你可以自由指定你写的程序的加载和读取位置(至少也是可以指定相对位置),但是像C语言这样的高级语言恐怕就没这么简单了。使用C语言编写程序的时候,编译器会自己去识别栈区和堆去,自己来决定加载位置,具体的方案取决于编译器的选择以及优化参数。这算得上是C语言

2017-03-07 20:58:24

对电子游戏的平衡性和可玩性的直观感受和对游戏生涯的憧憬

说道电子游戏(指的是电脑游戏和手机游戏),我相信大家都能有所分享。虽然说对于我本人而言,其实游戏玩得真心不多。但是,至少在这十几年来,还是有一些值得诉说和分享的东西。       在我两岁的时候(1998年……好吧,暴露年龄了),家里就有电脑了,那时候这还算比较稀罕的东西,父亲希望我可以早早接触这些代表新时代的产物,所以我在2岁的时候就开始接触计算机了。不过,那么小的时候到底能学会些什么呢,无

2017-03-07 00:24:33

007-进入保护模式

上次讲解到了OS内核的开始以及在进入保护模式之前需要了解一些概念。首先给出这部分内容的完整代码,然后分别来介绍。BOTPAK EQU 0x00280000 DSKCAC EQU 0x00100000 DSKCAC0 EQU 0x00008000 CYLS EQU 0x0ff0LEDS EQU 0x0ff1VMODE EQU 0x0ff2SCRNX EQU 0x0f

2017-03-06 13:36:28

006-继续编写操作系统

上次我们完成了ipl的阶段性目标,现在主要开始着手写操作系统内核。由于在实模式下能够使用的内存实在太少,而且对硬件也而是一种浪费,因此,我们要写一个32位内核的操作系统,所以,就要先进入保护模式。但是,由于在保护模式下不能调用BIOS,因此,要在引入保护模式之前,把可能需要用到的信息保存在内存中。我们指定了一些位置来存放相对应的信息,主要是关于屏幕的信息以及键盘指示灯的信息,代码如下:CYLS

2017-03-05 16:15:43

1.4 复合数据类型和枚举类型

逗比:呜啦啦啦啦啦~呜啦啦啦拉拉~各位小伙伴们大家好呀,欢迎来到暴走大……棒槌:CUT!逗比:哈?怎么了?第五季的出场不够帅?棒槌:我说你拿错剧本了吧……逗比:哦?是吗?啊呀!!!还真是咧,这是圣诞老王的剧本……棒槌:我说你是来逗比的吗?逗比:咳咳,明明是你昨天嫌我太正经,要我逗比一点的,一点都不体谅人家的辛苦。棒槌:本来就是,你去看看你同时更新那个操作系统的文章,简直

2017-03-02 17:28:09

1.3逗比又回来了!

棒槌:逗比啊,我说你这一年到底上哪去了,我还以为你变成代码被crush了!逗比:这个真的实在实在实在是很抱歉啊,去年突然接了一个活,然后就去忙活,后来跑去进修,再后来就过年了,这不一直到这会。棒槌:你倒是到处逍遥去了,你让你这些学生怎么办啊,哪有开课一年都不带更新的啊,很多学生都等不下去了的说,有多少人像我一样一直很相信你地等你啊?逗比:你不刚还说我变成代码被crash掉了么,这会又在

2017-03-01 23:28:00

005-完成ipl

上次完成了启动盘,我们已经成功把启动区加载到了内存中,当然了,这512字节的空间肯定是不可能够我们写一个完整的操作系统的,所以,我们操作系统的其他部分肯定得在别的地方写,那么,ipl的任务就应该是把软盘这1440KB的内容全部加载到内存中,不过这里有一个相当严重的问题,就是我们在实模式下,只有20位寻址空间,换句话说,我们只能访问1MB的内存,所以暂时还没办法把所有的数据都放到内存中,暂时我们先只

2017-03-01 22:38:39

004-写一个真正的启动盘

上次说到了使用软盘启动计算机的注意事项,那么,我们就来实际的操作一下,写一个真正可以用于启动计算机的启动盘。       首先,我们打开BZ,创建一个文件,然后按照以下方式来书写:后面就全是0了,因为还没写东西,注意要一直写满1440KB       当然,这样的话还不能真正启动计算机,因为指令不对,我们说,当计算机检查了磁盘格式,以及510和511字节的内容后,会执行

2017-03-01 20:09:58

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。