-
C++ string详解 C++字符串详解
所属栏目:[语言] 日期:2022-07-03 热度:56
C++ 大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。string 类处理起字符串来会方便很多,完全可以代替C语言中的字符数组或字符串指针。 string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。 使用[详细]
-
C++类和对象的总结 拿去做笔记吧
所属栏目:[语言] 日期:2022-07-03 热度:131
类的成员有成员变量和成员函数两种。 成员函数之间可以互相调用,成员函数内部可以访问成员变量。 私有成员只能在类的成员函数内部访问。默认情况下,class 类的成员是私有的,struct 类的成员是公有的。 可以用对象名.成员名、引用名.成员名、对象指针-成员[详细]
-
C++引用10分钟入门教程
所属栏目:[语言] 日期:2022-07-03 热度:78
我们知道,参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。 对于像 char、bool、int、float 等基本类型的数据,它们占用的内存往往只有几个字节,对它们进行内存拷贝非常快速。而数组[详细]
-
C++继承和派生简明教程
所属栏目:[语言] 日期:2022-07-03 热度:106
C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数[详细]
-
C++三种继承方式
所属栏目:[语言] 日期:2022-07-03 热度:157
C++继承的一般语法为: class 派生类名:[继承方式] 基类名{ 派生类新增加的成员 }; 继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。此项是可选项,如果不写,默认为 private(成员变量[详细]
-
C++继承时的名字遮蔽问题
所属栏目:[语言] 日期:2022-07-03 热度:122
如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。所谓遮蔽,就是在派生类中使用该成员(包括在定义派生类时使用,也包括通过派生类对象访问该成员)时,实际上使用的是派生类新增的成员,而不是从基类[详细]
-
C++基类和派生类的创建函数
所属栏目:[语言] 日期:2022-07-02 热度:151
前面我们说基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通[详细]
-
C++基类与派生类的析构函数
所属栏目:[语言] 日期:2022-07-02 热度:180
和构造函数类似,析构函数也不能被继承。与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉。 另外析构函数的执行顺序和构造函数的执行顺序也刚好相反: 创建派生类[详细]
-
C++多继承 多重继承 细说
所属栏目:[语言] 日期:2022-07-02 热度:131
在前面的例子中,派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Ja[详细]
-
C++虚继承和虚基类解说
所属栏目:[语言] 日期:2022-07-02 热度:50
多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。 多继承时很容易产生命名冲突,即使我[详细]
-
C++虚继承时的构建函数
所属栏目:[语言] 日期:2022-07-02 热度:123
在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调[详细]
-
C++将派生类赋值给基类 向上变型
所属栏目:[语言] 日期:2022-07-02 热度:188
在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道[详细]
-
C++多态和虚函数迅速入门教学
所属栏目:[语言] 日期:2022-07-02 热度:193
在《C++将派生类赋值给基类(向上转型)》一节中讲到,基类的指针也可以指向派生类对象,请看下面的例子: #include iostream using namespace std; //基类People class People{ public: People(char *name, int age); void display(); protected: char *m_n[详细]
-
C++虚函数注意点以及构成多态的条件
所属栏目:[语言] 日期:2022-07-02 热度:155
C++ 虚函数对于多态具有决定性的作用,有虚函数才能构成多态。上节《C++多态和虚函数快速入门教程》我们已经介绍了虚函数的概念,这节我们来重点说一下虚函数的注意事项。 1) 只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加。 2)[详细]
-
C++纯虚函数及抽象类详解
所属栏目:[语言] 日期:2022-07-02 热度:194
在C++中,可以将虚函数声明为纯虚函数,语法格式为: virtual 返回值类型 函数名 (函数参数) = 0; 纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。 最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统[详细]
-
C++ typeid运算符 取得类型信息
所属栏目:[语言] 日期:2022-07-02 热度:199
typeid 运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性: 对于基本类型(int、float 等C++内置类型)的数据,类型信息所包含的内容比较简单,主要是指数据的类型。 对于类类型的数据(也就是对象),类型信息是[详细]
-
C语言块级变量 在代码块内部定义的变量
所属栏目:[语言] 日期:2022-07-01 热度:184
所谓代码块,就是由{ }包围起来的代码。代码块在C语言中随处可见,例如函数体、选择结构、循环结构等。不包含代码块的C语言程序根本不能运行,即使最简单的C语言程序(上节已经进行了展示)也要包含代码块。 C语言允许在代码块内部定义变量,这样的变量具有[详细]
-
C语言递归函数 递归调用 详解 带实例演示
所属栏目:[语言] 日期:2022-07-01 热度:106
一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。 递归函数不是C语言的专利,Java、C#、JavaScript、PHP 等其他编程[详细]
-
忽略语法细节 从整体上理解函数
所属栏目:[语言] 日期:2022-07-01 热度:105
从整体上看,C语言代码是由一个一个的函数构成的,除了定义和说明类的语句(例如变量定义、宏定义、类型定义等)可以放在函数外面,所有具有运算或逻辑处理能力的语句(例如加减乘除、if else、for、函数调用等)都要放在函数内部。 例如,下面的代码就是错[详细]
-
C语言预处理命令是什么?
所属栏目:[语言] 日期:2022-07-01 热度:82
前面各章中,已经多次使用过#include命令。使用库函数之前,应该用#include引入对应的头文件。这种以#号开头的命令称为预处理命令。 C语言源文件要经过编译、链接才能生成可执行程序: 1) 编译(Compile)会将源文件(.c文件)转换为目标文件。对于 VC/VS,[详细]
-
C语言带参数的宏定义
所属栏目:[语言] 日期:2022-07-01 热度:195
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中[详细]
-
C语言带参宏定义和函数的区别
所属栏目:[语言] 日期:2022-07-01 热度:161
带参数的宏和函数很相似,但有本质上的区别:宏展开仅仅是字符串的替换,不会对表达式进行计算;宏在编译之前就被处理掉了,它没有机会参与编译,也不会占用内存。而函数是一段可以重复使用的代码,会被编译,会给它分配内存,每次调用函数,就是执行这块内[详细]
-
C语言预处理命令总结
所属栏目:[语言] 日期:2022-07-01 热度:77
预处理指令是以#号开头的代码行,# 号必须是该行除了任何空白字符外的第一个字符。# 后是指令关键字,在关键字和 # 号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。 下面是本章涉及到的[详细]
-
C语言 if ifdef ifndef的用法详解 C语言条件编译详解
所属栏目:[语言] 日期:2022-07-01 热度:117
假如现在要开发一个C语言程序,让它输出红色的文字,并且要求跨平台,在 Windows 和 Linux 下都能运行,怎么办呢? 这个程序的难点在于,不同平台下控制文字颜色的代码不一样,我们必须要能够识别出不同的平台。 Windows 有专有的宏_WIN32,Linux 有专有的宏[详细]
-
C语言 define的用法 C语言宏定义
所属栏目:[语言] 日期:2022-07-01 热度:151
#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。 我们先通过一个例子来看一下 #define 的用法: #include stdio.h #define N 100[详细]
