白话C++
文章平均质量分 87
南郁
《白话C++》作者
展开
-
C++之“流”-第3课-C++和C的格式化输入输出
八个实例讲解C++中setw、skipws、setfill、setprecision、dec/hex/oct、boolalpha,以及来自C++14新标的 qutoed 等输入输出操控符的功能与使用;并与C语言的输入输出(scanf、printf)在方便性和安全性方面作了直观的对比。原创 2024-06-07 16:34:29 · 933 阅读 · 1 评论 -
C++之“流”-第2课-C++和C标准输入输出同步
为什么C++和C的标准输入输出不同步时,数据会混乱?同步会带来多大性能损失?为什么说这个损失通常不用太在乎?原创 2024-05-27 19:08:09 · 971 阅读 · 0 评论 -
C++感受11-Hello Object 成员版
当一个C++程序员在设计类型时,他在想什么?1. 这一类型的对象,需要拥有哪些属性数据?2. 这一类型的对象,它将拥有哪些功能?3. 这一类型的对象,它的各个属性和功能之间,有哪些关联关系?原创 2024-05-21 11:38:07 · 865 阅读 · 0 评论 -
C++之“流”-第1课.上-掌握基本概念
了解流的本质是队列,懂得区分输入、输出流;理解“抽象流”和“具体流”之分,并掌握通过面向“抽象流”面程以获得代码更好的适用性。原创 2024-05-16 09:37:50 · 401 阅读 · 0 评论 -
C++函数模板可变参数如何一次性解包?
快速了解C++17的模板参数(parameter pack)如何一次性解包原创 2024-05-10 12:25:33 · 336 阅读 · 0 评论 -
使用using为指针定义别名为什么会对const属性有影响?
项目在遇到的,指针的别名会在函数签名中把顶层const变成底层const。简化了的代码大概是下面的情况。有人可以解释一下为什么么,以及如果我想继续使用指针的别名要怎么书写这个参数?唉,都是历史债。建议前四点都不看,只看最后一点“真正有用的知识”。原创 2024-05-07 10:32:46 · 864 阅读 · 1 评论 -
std::enable_shared_from_this 有什么意义?
为什么要有 std::enable_shared_from_this?原创 2024-04-30 17:08:07 · 842 阅读 · 0 评论 -
C++感受10-Hello Object 生死版•下
搞懂以下三个重要知识点:1. 对象生命周期2. 对象内存模型3. 对象的可见性原创 2024-04-25 14:31:47 · 1060 阅读 · 0 评论 -
C++“流”风格日志系统实战-课程简介
一个能快速提升C++复杂代码设计的学习项目,一个能迅速让C++面试官会心一笑的简历项目,一个能在实际项目中使用的项目……原创 2024-04-23 16:51:01 · 166 阅读 · 0 评论 -
C++感受9-Hello Object 生死版•上
“恐猪”和“恐蛇”在本课只是在陪太子读书,大家自行发挥它们的生死过程的定制吧。完成这个程序,你的一只脚已经悄然,迈过了面向对象世界大门的门槛了。原创 2024-04-23 16:06:14 · 919 阅读 · 0 评论 -
C++感受8-Hello World 循环版
重点学习如何使用 while 创建循环,和如何借助 break 打破循环……有破有立。含十数个知识点:bool类型、bool字面值、定义整数、如何从控制台计入整数,整数后置自增、如何求余,逻辑 “或” 运算等。含五个例程。原创 2024-04-22 09:30:00 · 927 阅读 · 0 评论 -
GUI04-深入分析基于框架窗口的应用
复杂应用最常见的桌面程序,基本都使用框架式的主窗口。本节涉及:1. 常见的应用中,哪些使用了框架窗口?2. wxWidgets 项目配置详解(为将来手工写wxWigets项目配置打基础);3. 复习如何使用Code::Blocks的向导,创建一个基于框架窗口的wxWidgets项目;4. wxApp 和 wxFrame 快速了解;5. 如何修改一个wxWigets应用程序的图标;6. 框架窗口的界面组成相关代码;原创 2024-04-19 17:44:54 · 799 阅读 · 0 评论 -
C++感受7-Hello World 分支版
表面的是:通过多级分支流程,实现上班路上遇见女神、老板娘、普通同事的差别化问候;暗地里还要学习内存,最后顺带复习了 std::string_view 和 std::string 之间围观与被围观 的往事原创 2024-04-20 09:00:00 · 870 阅读 · 0 评论 -
C++感受6-Hello World 交互版
先学变量,再学人机交互……原创 2024-04-19 16:59:50 · 1222 阅读 · 0 评论 -
C++感受5-HelloWorld 函数版
借助 Hello (std::string_view XXX) 函数,快速向你心目中的女神问好。(本课有福利)原创 2024-04-17 16:30:34 · 322 阅读 · 0 评论 -
GUI03-你好,wxWidget!跨平台项目对比
使用 wxWidgets 库在 Linux 和 Windows 下实现相同的功能:在窗口上跟踪输出鼠标坐标位置。一个不错的原生与跨平台实现的对比例程,让我们有机会对二者的实现做一个对比。原创 2024-04-17 11:09:40 · 477 阅读 · 0 评论 -
GUI02-在窗口上跟踪并输出鼠标位置(Win32版)
(1) 响应 WM_MOUSEMOVE 消息获得鼠标位置;(2) 响应 WM_PAINT 将鼠标位置输出到窗口中;(3) 学习二者之间的关键步骤:调用 InvalidateRect() 以通知窗口重绘。原创 2024-04-15 18:40:34 · 772 阅读 · 0 评论 -
GUI01-用C++在Windows桌面上打个叉❌
我们的目标是,只写一二十行代码,用 Windows自带的原生接口,强行在桌面上打个大红❌,如图:写了大半年C++,天天和“黑乎乎” 的小窗口你侬我侬?赶紧来打开一扇“Windows”,从窗口跳进全新的GUI世界吧。原创 2023-07-20 08:00:00 · 224 阅读 · 0 评论 -
静态反射C++枚举名字的超简方案——C++闲得慌系列之(一)
虽说支持传递非类型参数 是C++模板一项“令人发指”的特性,但又有细分:在当前主流的 C++1x 标准下,它是翘兰花指,而在C++20,这项特性是疯狂到赤裸裸“竖中指”的地步——C++1x (11、14、17)传的数据只能是简单类型,而C++20以后,竟然可以传用户自定久的struct/class类型的数据了……另外,请注意,这里使用了 gcc 的一处扩展:gcc 提供了静态版的 strlen()库函数 ,即:给出一个编译期的C风格(以零结束)的字符串,就能在编译期直接“数”出来这个字符串的长度。原创 2023-07-17 14:50:56 · 438 阅读 · 1 评论 -
怎样在c++中实现instanceof?
在 java 如此面向对象的语言中,日常业务逻辑的实现,但凡到了不得不用instanceof 的时候,99% 以上就是设计或实现错误了。原创 2023-07-12 10:47:11 · 424 阅读 · 0 评论 -
C++中,C::C::C::C::foo() 为什么编译成功?
有人问:class Entity{public: static void foo() {}};int main(){ Entity::Entity::Entity::Entity::Entity::foo();}为什么 最后那行:Entity::Entity::Entity::Entity::Entity::foo();能编译成功?这是什么规则?嗯……Entity::Entity::Entity::Entity::Entity::Entity::fo原创 2023-07-06 20:55:58 · 488 阅读 · 0 评论 -
大厂C++题第1辑——虚函数七题精讲之2:虚函数的作用机制
一、虚函数的常见应用场景;二、发挥虚函数作用的语法;三、虚函数的实现机制;四、虚函数的性能影响。原创 2023-07-04 12:42:00 · 180 阅读 · 0 评论 -
C++的“友元”是否会破坏类的封装?
向小范围的类或函数开放?或者,向整个世界开放?显然,前者封装性更高。在拥有 “包/package” 或 “模块/module” 级别的访问控制的语言中,比如Java、C#、Go、TypeScript 等等,“向小范围开放,但向全世界封闭” 这一设计需求很常见,也很容易实现;在C++当中,实现相同功能的方法,需要依靠更严格的 “友元 / friend” 控制。原创 2023-06-05 19:37:55 · 932 阅读 · 0 评论 -
大厂C++题第1辑——虚函数七题精讲之1:虚函数的作用
“虚函数的作用” 是面向对象的C++编程最基础也最核心的知识点,如果不能无法正确回答本题,则只此一题,不管大厂还是小厂,都铁定无缘了。原创 2023-06-11 22:35:09 · 809 阅读 · 0 评论 -
C++类型自定义,什么时候用 struct ,什么时候用 class ?
int x, y;假设,你写的这个程序已知就是给你读初一的大儿子用的,因引,你并没有去做深入的需求调研,你就自己定了:int 的取值范围够这小子用的了。所以,这时候,几乎可以说 这个 Point 类型 不存在“invariant / 不变式”。非要强说有,那就是:这个坐标 的 x轴 和 y轴,都不能超过 int 可表达的范围。这个“不变式”是由 内置类型 int 来维护的,我们全部的设计责任或成果就是:我选择了 int ,所以我很英明 ,或很愚蠢,如果后面发现初中生竟然需要计算超大值的坐标的时候。原创 2023-06-14 21:23:47 · 593 阅读 · 0 评论 -
《白话C++》之练功,讲了些什么?
《白话 C++ 》之 练功内容介绍原创 2023-03-19 01:49:38 · 362 阅读 · 3 评论 -
第4章 感受(二)——4.7. Hello Database GUI版
[回到目录]白话C++4.7. Hello Database GUI版类似“Hello GUI” 章中的4.1.3小节 “向导-wxWidgets project”,创建一个空白的wxWidgets 对话框界面的项目,并命名为“HelloDatabase_GUI”。4.7.1. 配置构建选项类似前一章的“Hello Database 控制台版”,请为新项目“HelloDa原创 2009-06-08 21:37:00 · 2052 阅读 · 0 评论 -
第5章 基础——5.1. 从代码程序
[回到目录]白话C++第5章. 基础 总有一些知识,要在多年以后,我们才能感受得到它的力量。 5.1.从代码到程序这是一行代码: cout<< "Hello world!" << endl;它是如何变成一段程序,从而在屏幕上打出“Hello world”呢?从一行文字代码,最后演变到一个硬件动作,我们无法在本收细究这一过程,但其原创 2009-06-08 21:42:00 · 1516 阅读 · 0 评论 -
第5章 基础——5.2. 构建C++程序
白话C++[回到目录]5.2.构建C++程序C++是典型的“编译型”语言。对于编译型语言,我们可以笼统地将“代码变成程序”这个过程,称呼为“编译”。不过,如果细分起来,这个过程还包括了以下三个子过程:预编译/precompile 编译/compile链接/link 此时,为了避免混淆,我们需要将“代码变成程序”这个完整的过程,称为“构建/build”。上原创 2009-06-08 21:46:00 · 1481 阅读 · 2 评论 -
第3章 感受(一)——3.1. Hello world 经典版
[回到目录]白话C++ 第3章. 感受 Hello world!,Hello C++,我们来了!3.1. Hello world 经典版 毫无疑义,一个真正的程序员,总是愿意把自己的第一次——我是说“感受”——献给是“Hello world”。 著名的C语言的教程书:《The C Programming Language》,作者是C语言的两位创始人(原创 2008-09-11 15:00:00 · 3160 阅读 · 0 评论 -
第5章 基础——5.3. C++项目组成
[回到目录] 白话C++ 5.3. C++项目组成首先我们知道了,写一个C++程序,可能需要多个源文件,比如a.cpp、b.cpp。有没有可能只用一个源文件呢?似乎是可以的,比如我们之前写的“Hello world”经典版等项目,不就只有一个main.cpp吗。其实,就算是“Hello world”经典版这样一个小程序,我们也要支付链接器同志的出场费。因为,我们在代码中使用原创 2009-06-18 12:40:00 · 3068 阅读 · 0 评论 -
第5章 基础——5.4. 进程与内存
5.4. 进程与内存前面讲“库”文件时说到:动态库的“函数”,有“函数地址”。其实不仅函数有地址,程序中的各种数据,都有地址。5.4.1.什么叫进程当程序安静地躺在硬盘上时,它是一个“文件”,非要给点区别的话,它是一个“可执行文件”;而当程序运行起来,它就从硬盘上一跃进入内存,这时它就被叫做一个“进程/process”了。〖课堂作业〗:学习通过“任务管理器”观察进程请同时按下C原创 2009-06-21 13:00:00 · 2263 阅读 · 2 评论 -
第5章 基础——5.7. 进制.1
5.7. 进制.1我女儿读幼儿园时,我就开始关心起她的算术能力。于是我了解到,她在小班的时候,就会个位数的加法,但一晃两年,到大班要结束了,才见她拿着算盘在那里炫她的百位数以内加减。我提到了“个位”、“百位”,您懂吧——不懂?不会吧,我的书居然也有幼儿园的小朋友读者了。没错,平常我们用惯的数,是逢十进一,称为“十进制”数。十进制数的最低位,称为“个位”,而后是“十位”,“百位”,“原创 2009-06-24 21:03:00 · 2474 阅读 · 4 评论 -
第5章 基础——5.8. 进制.2
5.8. 进制.25.8.1 十六进制说到十六进制,首先会问:总共只有10个阿拉伯数字:0、1、2、3、4、5、6、7、8、9,如何表达“逢16进1”的概念呢?方法是用英文字母(大小写均可):A、B、C、D、E、F表达10~15。所以,如果我告诉你:这是一个数:“17FCA0”,你肯定能猜到它是一个十六进制的数,不过如果我说的是:“12390”,就不好区分是什么进制了。在C原创 2009-06-24 21:10:00 · 3366 阅读 · 4 评论 -
罗裳轻解,看C++怎样拥java入怀……
前言在公司里维护一个网络后台服务端程序,用C++写的,为了一些灵活性,就想集成个脚本语言,因为lua似乎没有什么库(或者是我对它比较无知),于是就选了老牌的python。确实噢,这家伙基本什么c/c++的库,都有它的封装。于是在服务端程序里,嵌了一个python的解释器。原创 2011-08-06 16:06:07 · 4987 阅读 · 11 评论 -
增值你的C++技能,C++成为WEB后台“颜值 ”担当(三)
这一篇我们就将本篇要用到的几项工具准备好。到下一篇开始写个C++ WEB应用的“Hello World”。然后将来再根据需要,继续安装新工具。原创 2016-10-22 15:12:38 · 3185 阅读 · 4 评论 -
第4章 感受(二)——4.6. Hello Database 控制台版
[回到目录]4.6. Hello Database 控制台版在Code::Blocks中新建一个控制台应用项目——没错,我们的老朋友“控制台”——项目命名为“HelloDatabase_Console”。打开向导自动生成的“main.cpp”文件,通过主菜单“编辑 → 文件编码”,修改为“系统默认/System default”(在中文Windows下,默认编码为“GBK”)原创 2009-03-16 17:40:00 · 1692 阅读 · 2 评论 -
第4章 感受(二)——4.5. Hello Database 准备
[回到目录]白话C++4.5. Hello Database 准备“Hello GUI 布局篇”才是“Hello Database”小节最初的准备。我们将通过三个小节的内容,来完成“Hello Database”的学习。首先是本节的“准备篇”,用以完成以下四个任务:了解数据库应用编程(“客户/服务”二层结构)的基本概念;在Code::Blocks中配置和“Hello D原创 2009-03-16 17:33:00 · 1290 阅读 · 0 评论 -
《2008版 白话C++》实时目录
《2008版 白话C++》------------------------(消息:本书已经和出版社签定出书合同。出书时间:2009年9月) 网站: www.d2school.com 另,为了和网上流传的所有旧版 《白话C++》区别,有利于大家搜索,暂时加上前缀“2008版”。------------------------第1章 启蒙原创 2008-10-03 17:25:00 · 25424 阅读 · 52 评论 -
第3章 感受(一)——3.7. Hello object 生死版
[回到目录]白话C++ 3.7. Hello object 生死版 初涉编程,很多人都听过“OO”这个词,它是“Object Oriented”的缩写,中文翻译成:“面向对象”,更直一点:“以对象为导向”。具体的含义是,分析问题时,将问题牵涉的种种因素,当成一个完整的“对象”加以考虑, “面向对象”思路带来一些的新特性,其中“封装”是最基本的一点。即错综原创 2008-09-30 12:22:00 · 2308 阅读 · 4 评论