
C++ Primer Plus
C++语法知识精讲
人工智能博士
王博Kings,985AI博士在读,优快云博客专家,华为云专家,是《机器学习手推笔记》、《深度学习手推笔记》等作者;在人工智能、计算机视觉、无人驾驶等具有丰富的经验。
展开
-
【C++】C++学习建议、运算符重载
运算符重载运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。C++将运算符重载扩展到用户定义的类型两个数组相加for (int i = 0 ; i < 20 , i++) evening[i] = sam[i] + janet[i];表示数组的类,重载+运算符evening = sam + janet;...原创 2019-08-11 11:29:30 · 1556 阅读 · 0 评论 -
【C++】使用类实现抽象数据类型(Abstract Data Type, ADT)
类通常表示更加通用的概念ADT使用通用的方式描述数据类型,而没有引入语言或实现细节比如栈:创建空栈 从栈顶添加数据 从栈顶删除数据 栈是否满 栈是否空stack.h//stack.h -- 堆栈的类定义实现#ifndef STACK_H_#define STACK_H_typedef unsigned long Item;class Stack{publ...原创 2019-08-09 15:48:37 · 2630 阅读 · 0 评论 -
【C++】堆、栈、堆栈、队列的理解
1. 堆:什么是堆?又该怎么理解呢?①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一...转载 2019-08-09 09:48:29 · 2151 阅读 · 0 评论 -
【C++】类作用域详解
目录1. 可以在不同类中使用相同的类成员名2. 不能从外部访问类成员,公有成员函数如此,要调用公有成员函数,必须通过对象3. 定义成员函数时必须使用作用域解析运算符4. 使用成员运算符(.)、简介成员运算符(->)或作用解析运算符(::)5. 作用域为类的常量5.1 第一种方式是在类中声明一个枚举5.2 第二种方式是使用关键字static:6 作用域内枚举...原创 2019-08-08 18:29:05 · 10759 阅读 · 0 评论 -
【C++】this 指针和对象数组详解
目录1. 涉及到两个对象时,需要使用this指针2. 如何将两个要比较的对象提供给成员函数呢?3. 回顾const 成员函数4.const Stock & topval ( const Stock & s) const 解读5. topval如何实现?6. this是返回对象的地址,*this是对象程序实现stock20.husestock...原创 2019-08-08 10:55:38 · 2098 阅读 · 1 评论 -
【C++】类的构造函数与析构函数笔记
目录0. 整体概述为什么要引入构造函数1. 声明和定义构造函数程序声明对象时,将自动调用构造函数1.1 成员名和参数名2. 使用构造函数2.1 显式调用构造函数2.2 隐式调用构造函数2.3 构造函数与new一起使用的方法3. 默认构造函数4. 析构函数什么时候调用析构函数呢?5 改进Stock类stock10.hStock10.cpp...原创 2019-08-06 14:26:00 · 1587 阅读 · 1 评论 -
【C++】如何使用类?C++如何设定输出小数位数?C++如何不让输出科学计数法?C++如何设定数字输出格式?
目录以一个股票为例如何使用类?注意看usestock00.cpp代码usestock00.cppstock00.hstock00.cppC++如何设定数字输出格式?看stock00.cpp这个show_pre()函数函数解读程序运行结果以一个股票为例stock00.cpp 是stock00.h类函数实现 usestock00.cpp就是主函数如何使...原创 2019-08-01 15:37:41 · 2441 阅读 · 0 评论 -
【C++】抽象和类(2)--如何实现类成员函数?
目录1实现类成员函数成员函数的定义有两个特殊的特征类方法的完整 名称包括类名类方法可以直接 访问私有成员!!!2 代码示例stock00.hstock00.cpp3. 代码解析3.1 成员函数说明3.2 内联方法3.3 方法使用哪个对象?请大家回顾第一讲:【C++】抽象和类(1)--OOP编程特性、类规范基本组成、接口是什么、类与结构的区别...原创 2019-08-01 10:51:41 · 2174 阅读 · 0 评论 -
【C++】抽象和类(1)--OOP编程特性、类规范基本组成、接口是什么、类与结构的区别
目录0 . 基本概念OOP特性:过程性编程:OOP编程:1. 抽象和类1.1 类型是什么指定基本类型完成了三项工作:1.2 C++中的类类规范由两个部分组成:什么是接口?1.3 stock00.h1.3.1.访问控制1.3.2 控制对成员的访问:公有还是私有类与结构的区别0 . 基本概念面向对象编程(OOP)是一种特殊的、设计程...原创 2019-08-01 10:27:46 · 1771 阅读 · 2 评论 -
【MFC】fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MF
出现以下错误:fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]> XYZoneChangeDlg.cpp静态链接...原创 2019-07-25 18:52:09 · 11439 阅读 · 2 评论 -
【C++】名称空间示例:一个小型程序的完全实现,深入理解程序结构!!!
目录这个程序包含三部分:namesp.hnamesp.cppnamessp.cpp运行结果:这个程序包含三部分:namesp.hnamesp.cppnamessp.cppnamesp.h//namesp.h #include<string>// 创造名称空间namespace pers{ struct Person { s...原创 2019-07-25 10:03:50 · 1494 阅读 · 0 评论 -
【C++】名称空间:传统的C++名称空间+using namespace如何使用?using编译指令与using声明比较
目录名称空间1. 传统的C++名称空间1.1 声明区域(declaration region):1.2 潜在作用域(potential scope):1.3 作用域(scope):1.4 声明区域 示意图1.5 潜在作用域与作用域 示意图2. 新的名称空间特性2.1 using声明和using编译指令2.2 using 编译指令和using声明之比较...原创 2019-07-24 11:02:44 · 1536 阅读 · 0 评论 -
【C++】内存的存储方案与动态分配new的讲解
目录1. 基本知识什么是动态内存?编译器分配3种内存:2. new 运算符2.1 使用new运算符时的初始化2.2 new失败时如何处理?2.3. new:运算符,函数和替换函数2.4. 定位运算符new示例程序1. 基本知识什么是动态内存?使用new和delete(C语言中使用函数malloc( ))分配的内存,我们叫做动态内存。动态内存由new...原创 2019-07-19 16:13:25 · 1680 阅读 · 0 评论 -
【C++】静态存储持续性、无链接性
本程序主要关注total,它能够一直记录保持// static.cpp -- 使用static局部变量#include<iostream>const int ArSize = 10;void strcount(const char * str);int main(){ using namespace std; char input[ArSize]; char n...原创 2019-07-18 15:45:53 · 1491 阅读 · 0 评论 -
【C++】静态持续性、外部链接性、内部链接性如何理解
目录外部变量单定义规则:关键词extern程序示例运行结果:全局变量和局部变量外部变量链接性为外部的变量通常简称为外部变量,它们的存储持续性为静态,作用域为整个文件。外部变量在函数外部定义的,因此对所有函数而言都是外部的。外部变量也称全局变量(相对于局部的自动变量)。单定义规则:一方面,在每个使用外部变量的文件中,都必须声明它;另一方面,C++有“单定义...原创 2019-07-17 15:42:33 · 1880 阅读 · 2 评论 -
【C++】静态持续变量?如何创建静态持续变量?
1. C++为静态存储持续性变量提供了3中链接性:外部链接性(可在其他文件中访问) 内部链接性(只能在当前文件中访问) 无链接性(只能在当前函数或代码块中访问)由于静态变量的数量在程序运行期间是不变的,因此程序不需要使用特殊的装置(如栈)来管理它们编译器将分配固定的内存块来存储所有的静态变量,这些变量在整个程序执行期间一直存在 如果没有显式地初始化静态变量,编译器将把它设置...原创 2019-07-16 17:25:20 · 2326 阅读 · 2 评论 -
【C++】自动存储持续性、自动变量和栈
目录1. 自动存储持续性2. 自动变量和栈1. 自动存储持续性在默认情况下,在函数中声明的函数参数和变量的储存持续性为自动,作用域为局部,没有链接性。也就是说,如果在main()中声明了一个名为texas的变量,并在函数oil()中也声明了一个名为texas变量,则创建了两个独立的变量——只有在定义它们的函数中才能使用它们。另外,当程序开始执行这些变量所属的代码块时,将为其分...原创 2019-07-16 17:00:21 · 1921 阅读 · 0 评论 -
【C++】内存是什么?自动存储、静态存储、线性存储、动态存储的持续性如何理解?
内存有关的知识:C++使用三种不同方案来存储数据,C++11是四种,这些方案的区别在于数据保留在内存中的时间1. 自动存储持续性:在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。他们在程序开始执行其所属的函数或者代码块时被创建,在执行完函数或者代码块时,他们实用的内存被释放。C++有两种存储持续性为自动的变量2. 静态存储持续性:在函数定义外定义的变量和使用关键字s...原创 2019-07-16 09:52:04 · 1677 阅读 · 0 评论 -
【C++】单独编译--一个大型程序如何构造?
目录程序分为三部分头文件包含的内容:coordin.hfile1.cppfile2.cpp运行结果多个库连接问题程序分为三部分头文件:包含结构声明和使用这些结构的函数原型 源代码文件:包含与结构相关的函数原型代码 源代码文件:包含main,调用与结构相关的代码头文件包含的内容:函数原型 使用#define 或者const 定义的符号常量...原创 2019-07-15 17:13:49 · 1968 阅读 · 0 评论 -
【C++模版】显式实例化、显式具体化、隐式实例化
目录总体概念隐式实例化:显式实例化:显示具体化:详细理解显示实例化显示具体化总体概念隐式实例化:在使用模板之前,编译器不生成模板的声明和定义实例。只有当使用模板时,编译器才根据模板定义生成相应类型的实例。如:int i=0, j=1;swap(i, j); //编译器根据参数i,j的类型隐式地生成swap<int>(int &...原创 2019-07-15 10:08:04 · 2400 阅读 · 0 评论 -
【C++】如何理解函数模板【3】--重载的函数模板+显式具体化模板函数
模板函数显式具体化原创 2019-07-10 16:40:07 · 1719 阅读 · 0 评论 -
【C++】如何理解函数模板【2】--重载的函数模板+模板的局限性
目录程序示例:运行结果:模板的局限性程序示例://twotemps.cpp -- 使用重载模板#include<iostream>template <typename T>void Swap(T &a, T &b);template <typename T>void Swap(T *a, T *b, int n...原创 2019-06-27 22:11:22 · 1706 阅读 · 0 评论 -
【C++】如何理解函数模板【1】--函数模板是什么以及简单程序示例
基本理解示意原创 2019-06-23 22:31:09 · 1930 阅读 · 0 评论 -
【C++】如何理解函数重载【2】--函数重载示例
重载函数原创 2019-06-22 21:43:32 · 1721 阅读 · 0 评论 -
【C++】如何理解函数重载【1】--函数重载的基本概念
重载的基本概念学习笔记原创 2019-06-21 20:08:11 · 2150 阅读 · 0 评论 -
【C++】默认参数
基本概念和程序示例原创 2019-06-10 16:37:54 · 2185 阅读 · 0 评论 -
【C++】引用变量--7.何时使用引用参数
基本概念和使用法则原创 2019-06-09 21:20:25 · 1799 阅读 · 0 评论 -
【C++】引用变量--6.对象、继承和引用(核心+难点)
继承和引用的巧妙原创 2019-06-06 17:11:05 · 1845 阅读 · 0 评论 -
【C++】引用变量--5.将引用用于类对象(核心+难点)
注意警醒的地方原创 2019-06-02 21:25:57 · 1866 阅读 · 0 评论 -
【C++】引用变量--4.将引用用于结构(核心+难点)
本节内容不好理解,需要反复看!原创 2019-05-31 10:34:35 · 1802 阅读 · 0 评论 -
【C++】引用变量--3.引用的属性与特别之处
目录首先先看一个程序示例refcube(x + 3.0)函数调用不了临时变量,引用参数和const什么是左值?为什么要尽可能使用const首先先看一个程序示例// cubes.cpp -- regular and reference arguments// 求立方,然后一个是普通的,一个是通过引用#include<iostream>doubl...原创 2019-05-23 16:48:31 · 1744 阅读 · 0 评论 -
【C++】引用变量--2.将引用作为函数参数
目录按值传递和按引用传递区别指针,引用传递程序示例程序理解按值传递和按引用传递区别指针,引用传递程序示例// swaps.cpp -- 使用指针和引用来进行交换#include<iostream>void swapr(int & a, int & b); void swapp(int * p, int * q);void sw...原创 2019-05-22 21:05:26 · 2560 阅读 · 0 评论 -
【C++】引用变量--1.如何创建引用变量
目录引用变量1.1 创建引用变量引用变量的程序示例程序运行结果引用变量引用是对已定义的变量的别名,比如一个人的大名和小名,这指的都是一个人。区别指针与引用变量1.1 创建引用变量比如要将rodents作为rats变量的别名,可以这样做:int rats;int & rodents =rats;注意,&这里不是地址运算符,而是类型标识...原创 2019-05-22 10:06:34 · 2802 阅读 · 0 评论 -
【C++】内联函数是什么?内联和宏有什么区别?
目录什么是内联函数?什么时候使用内联函数?内联函数和常规函数的区别如何使用内联函数?注意:代码示例运行结果:内联与宏有什么区别什么是内联函数?内联函数是C++为了提高程序运算速度所做的一项改进。内联函数 的编译代码与其他程序的代码“内联”起来,也就是不用乱跳来跳去,编译器将使用的相应的函数代码替换函数调用。什么时候使用内联函数?内联函数的 运...原创 2019-05-20 21:36:02 · 2482 阅读 · 1 评论 -
【C++】深入理解函数指针
C++11 特性auto方便了我们使用函数指针原创 2019-04-21 19:15:01 · 2133 阅读 · 0 评论 -
【C++】函数指针基础知识理解和使用--统计代码运行时间的简易程序
深入浅出理解函数指针,并通过实际例子理解并实现原创 2019-04-20 16:17:04 · 1723 阅读 · 0 评论 -
【C++】递归(2)--包含多个递归调用的递归理解
//ruler.cpp -- 使用递归方法#include<iostream>const int Len = 66;const int Divs = 6;void subdivide(char ar[], int low, int high, int level);int main(){ char ruler[Len]; int i; for (i = 1; i ...原创 2019-04-19 20:25:48 · 2532 阅读 · 0 评论 -
【C++】递归(1)--包含一个递归调用的递归理解
递归是一层一层进去,然后再从最里面一层一层出来;比如你买了一个俄罗斯套娃,一共3层,大白+中黑+小红:大-->>中-->>小这样进来,然后红-->>黑-->>白 出来!原创 2019-04-15 10:54:40 · 1991 阅读 · 0 评论 -
【C++11 】模板类array对象的使用方法
目录1.总体理解array2.具体理解array3.array程序示例 1.总体理解arrayC和C++创建数组时,通常会使用new和delete来管理空间C++11提供了 一种新的思路,#include <array> ,这种办法执行效率甚至比vector都高,这样我们不用自己再管理内存2.具体理解array假设 现在使用array对象来 存储一年...原创 2019-02-14 16:30:29 · 3546 阅读 · 0 评论 -
【C++】深入理解“内联与宏”
内联函数内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。 ...原创 2019-01-05 11:29:19 · 1758 阅读 · 0 评论