- 博客(230)
- 资源 (1)
- 收藏
- 关注
原创 《C++新经典对象模型》之第5章 函数语义学
缺省参数是静态绑定,考虑执行期间效率问题,好实现。不要在子类中重新定义虚函数缺省参数的值。父类中至少存在一个虚函数,才能获取准确的RTTI信息。RTTI手段,可以在执行期间查询一个多态指针或者多态引用的信息。RTTI能力,通过typeid或者dynamic_cast运算符体现。void myselffunc() {} // 只属于Derive的函数if (1)// 基类指针指向一个子类对象。
2024-05-13 15:38:13
1311
原创 《C++新经典对象模型》之第4章 数据语义学
4.1.2 成员函数参数类型的确定时机(最近碰到原则)04.01.cpp4.2 进程内存空间布局最高内存地址栈区(向下增长)堆区(向上增长)数据段(含BSS段)代码段最低内存地址进程虚拟地址空间(内存)划分:(1)栈(堆栈/栈区):局部变量等。(2)堆(堆区):new、malloc等申请内存空间。(3)BSS段:未初始化全局变量,初始化为0的全局变量。(4)数据段:已初始化的全局变量,包含BSS段。(5)代码段:存放程序执行代码。Linux上列出可执行文件中全局变量等存放位置的
2024-05-13 15:37:59
749
原创 《Linux C/C++服务器开发实践》之第7章 服务器模型设计
网络I/O模型分为异步I/O(asynchronous I/O)和同步I/O(synchronous I/O),同步I/O包括阻塞I/O(blocking I/O)、非阻塞I/O(non-blocking I/O)、多路复用I/O(multiplexing I/O)和信号驱动式I/O(signal-driven I/O)。对于输入操作,进程I/O系统调用后,内核先看缓冲区是否有相应数据,无则到设备(比如网卡设备)读取(设备I/O慢,需等待),有则直接复制到用户进程空间。注册信号处理函数,进程运行不阻塞。
2024-04-11 06:31:35
1270
6
原创 《Linux C/C++服务器开发实践》之第6章 原始套接字编程
发送自定义的IP报文、UDP报文、TCP报文、ICMP报文、捕获所有经过本机网卡的数据报、伪装本机IP地址、操作IP首部或传输层协议首部等。(1)收发ICMPv4、ICMPv6和IGMP数据报,只需IP头部预定义好网络层上的协议号。(4)让网卡处于混杂模式,从而能捕获流经网卡的所有数据报。发送接收IP数据报,从而分析TCP、UDP和ICMP。(3)设置对端IP地址,不涉及端口号(传输层才有)。(4)组织IP数据报,即填充首部和数据部分。(5)过滤数据报,即判断是否是需要的数据报。(2)创建原始套接字。
2024-04-11 06:31:17
1219
原创 《C++新经典对象模型》之第6章 对象构造语义学
(2)在构造函数中调用的虚函数从所在类往根类回溯,逐次找这个虚函数,找到哪个就直接调用(静态方式)。(2)类中类类型成员变量具有析构函数,会在析构函数后面插入代码,调用该成员变量所属类的析构函数。(1)构造函数中调用虚函数,并不通过虚函数表来调用,而是直接调用(虚函数有真实地址)。(1)类继承的父类具有析构函数,会在析构函数后面插入代码,调用父类的析构函数。先成员变量(定义顺序,从上到下),后构造函数(先初始化列表,后函数体)。(1)类继承的父类具有析构函数,会合成析构函数并调用父类的析构函数。
2024-03-19 22:10:25
1159
原创 《C++游戏编程入门》第10章 继承与多态:Blackjack
从已有类派生新类,自动继承已有类的数据成员与成员函数。减少工作量。功能函数不必再次编写。减少错误。代码更加清晰。运行时,对象类型决定实际调用的成员函数。虚函数通过引用和指针来产生多态行为。虚析构函数作用:编译器在派生类中插入对基类虚析构函数的调用。class Creature // 抽象类public:// 纯虚函数protected:public:void Orc::Greet() const // 重写纯虚函数int main()
2024-03-14 09:23:06
923
原创 《C++游戏编程入门》第9章 高级类与动态内存:Game Lobby
友元函数对类的任何成员都有完全的访问权。堆(自由存储区),程序员负责分配与释放。对象的组合,对象成员变量含其他对象。
2024-03-13 22:20:43
569
原创 《C++游戏编程入门》第8章 类:Critter Caretaker
class Critter // 类定义,定义新类型Critterpublic:// 声明数据成员// 声明成员函数void Critter::Greet() // 成员函数定义int main()// 对象实例化// 对象操作// 成员函数调用return 0;
2024-03-13 21:51:35
327
原创 《C++游戏编程入门》第7章 指针:Tic-Tac-Toe 2.0
数组名是指向数组第一个元素的常量指针。const用来限制指针。包含内存地址的变量。
2024-03-13 06:37:50
575
原创 《C++游戏编程入门》第6章 引用:Tic-Tac-Toe
/ 空棋盘// 规则介绍// 人类选择先后手// 计算机取对手// X先手// 显示棋盘while (winner(board) == NO_ONE) // 未分胜负// 当前轮次// 人类移动// 下棋else// 计算机移动// 下棋// 显示棋盘// 轮次交替// 宣布获胜情况return 0;// 显示游戏操作指南// 一直询问,直到输入y或ndo。
2024-03-12 21:40:16
395
原创 《C++游戏编程入门》第5章 函数:Mad Lib
Standard Template Library,提供算法、容器和迭代器等。全局变量,程序各部分间共享信息(任意部分都能访问的变量)。短小函数,直接复制到调用处,程序不必跳转。函数名相同,形参个数或类型不相同。变量作用域决定可见范围。为函数形参指定默认值。
2024-03-12 20:43:13
461
原创 《C++游戏编程入门》第4章 标准模板库: Hangman
int main()// 常量、变量初始化unsigned// 常量、变量初始化 const int MAX_WRONG = 8;\n";char guess;return 0;\n";char guess;
2024-03-12 06:56:50
467
原创 《C++游戏编程入门》第2章 真值、分支与游戏循环: Guess My Number
只用于比较int型(或可当作int型处理的值,char型或枚举型)。注意优先级和短路现象。
2024-03-11 21:42:15
539
原创 《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune
大量资源库可使用,图像API、2D、3D、物理以及声音引擎。编辑器->源代码->编译器->目标代码->链接器->可执行文件。无法找到外部引用,调整引用关系,重新编译/链接。包括面向对象编程的多范型语言。语法错误,应修复警告。非法操作,逻辑错误等。
2024-03-11 21:19:32
541
原创 《C++新经典对象模型》之第3章 虚函数
(1)含虚函数的类才有虚函数表(二级指针,内部多个虚函数【一级函数指针】编译时已经固定,子类覆盖父类),各个类对象(实例)有各自的vptr(虚函数表指针,三级指针),地址不同,但都指向类的虚函数表。obj指针在栈上,指向一个堆区(Derived实例),该实例中的虚函数表指针在执行类构造函数后,指向数据段中的该类的虚函数表,而虚函数表中每一项指向代码段中的虚函数。(2)同样在编译期间在类构造函数中添加给虚函数表指针vptr赋值的语句,这样运行时,生成类对象,调用构造函数时,会为vptr赋值。
2024-03-08 10:56:12
705
原创 《C++新经典对象模型》之第7章 模板实例化语义学
编译时可能多个.obj文件产生了多个相同的ATPL类,但链接时只保留一个ATPL类实体,其余忽略掉。类模板的显示实例化,所有内容(类、成员函数、虚函数、静态成员变量等)都实例化出来,无论是否调用。虚函数,产生虚函数表,虚函数表需要放置各个虚函数的地址,所以实例化出所以虚函数。编译器编译时根据funcadd的调用来确定函数模板中T的类型。类模板存在虚函数时,会实例化所以虚函数,即使未调用。实例化单独的成员函数,类并未实例化。
2024-03-07 22:22:17
539
原创 《C++新经典对象模型》之第2章 对象
C++新经典对象模型第2章 对象(实例)2.1 类对象占用空间2.2 对象结构的发展和演化第2章 对象(实例)2.1 类对象占用空间对象有地址,地址单元里面保存有内容。即便sizeof(空类)或者size(空类对象),得到的结果是1,不是0。class A {};cout <<sizeof(A); //1类中成员函数不占用类对象内存空间。class A {void func(){};void func1(){};void func2(){};};cout <<
2024-03-06 22:16:49
1166
3
原创 《C++新经典设计模式》之第1章 介绍
模式,事物的标准样式或者针对特定问题的可重用解决方案。反复使用的代码设计经验的总结。提高开发效率的编程方法。常见问题的通用解决方法。特定问题发生时的可重用解决方案。描述模块或类对象间关系、职责,以及它们之间的分工与合作。保证模块间的代码灵活性和可复用性,增加了复杂性。灵活性(可扩展性/低耦合性)游戏中人物和衣服分开。修改现有代码不影响其他部分代码(修改代码集中在一起)。增加内容时,不或少修改已有内容。可复用性可重复用,被多处调用。多态性。
2023-12-13 07:52:33
382
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人