摘要:
[TOC] 1. 总结 无论是在初始化列表中,还是在构造函数体内,请为内置类型对象进行手工初始化,因为C++不保证初始化它们 最好使用初始化列表进行初始化,而不要在构造函数体中使用赋值;初始化列表最好列出所有的成员变量,其排列顺序应该和它们在class中的声明顺序相同 为了避免"不同源文件内定义的n 阅读全文
摘要:
[TOC] 1. 总结 const可用于任何作用域内的对象、函数参数、函数返回值、成员函数自身,将这些内容声明为const可帮助编译器侦测出错误用法 对于const成员函数,C++编译器强制要求bitwise constness,但在编写程序时应该使用"概念上的常量性" const成员函数可以修改被 阅读全文
摘要:
[TOC] 1. 总结 对于单纯常量,最好以const常量或enum替换 define 对于宏代码段,最好改用inline函数替换 define 2. 使用const常量或enum替换宏常量 当我们以const常量替换 define,有两种特殊情况值得说说。 class外部的常量指针 第一种是定义c 阅读全文
摘要:
将C++视为由以下4个次语言组成的联邦而非单一语言。 C Object Oriented C++,也就是面向对象的C with class,包括构造析构、封装、继承、多态、虚函数等知识 Template C++,这是C++的泛型编程(Generic Programming)部分 STL 每个次语言都 阅读全文
摘要:
[TOC] 1. 端口号 在同一台主机或设备上,可能有多个进程同时在使用TCP或UDP协议,端口号的作用就是区分这些不同的进程,即每个进程使用各自不同的端口号。 对于TCP协议和UDP协议,端口号都是用unsigned short类型表示,即端口号的范围为0 65535,这65536个端口号被分为3 阅读全文
摘要:
慢系统调用,指的是可能永远无法返回,从而使进程永远阻塞的系统调用,比如无客户连接时的accept、无输入时的read都属于慢速系统调用。 在Linux中,当阻塞于某个慢系统调用的进程捕获一个信号,则该系统调用就会被中断,转而执行信号处理函数,这就是被中断的系统调用。 然而,当信号处理函数返回时,有可 阅读全文
摘要:
[TOC] 1. 什么是抽象类 在进行面向对象分析时,会发现一些抽象的概念,比如图形Shape,要想计算图形的面积,就必须先知道具体的图形类型,因为对概念上的“图形”求面积是没有意义的。 在面向对象理论中,现实世界中的抽象概念可以用抽象类表示 抽象类是一种只能定义类型、不能产生对象的类 抽象类的直接 阅读全文
摘要:
[TOC] 1. 多态的概念和意义 回忆一下上一节继承(二)函数重写示例代码中的how_to_print(),当时我们所期望的结果是 根据实际的对象类型判断如何调用重写函数 父类指针(引用)指向 父类对象则调用父类中定义的函数 子类对象则调用子类中定义的重写函数 要实现上述期望结果,需要用到多态的知 阅读全文
摘要:
[TOC] 1. 父子间的同名冲突 同名变量冲突 子类可以定义父类中的同名成员变量 父类中的同名成员变量被隐藏,但仍然存在于子类中 父类中的同名成员变量需要通过作用域分辨符(::)访问 cpp class Parent { public: void print() { cout include us 阅读全文
摘要:
[TOC] 1. 继承的概念和意义 类之间的关系 在C++中,类之间可以有直接的关联关系,包括组合关系和继承关系。 组合关系:整体与部分的关系 继承关系:父子关系 组合关系 组合关系描述的是类之间整体与部分的关系,具有以下特点 将其他类的对象作为当前类的成员变量使用 当前类的对象与成员对象的生命期相 阅读全文