C++语法
文章平均质量分 87
智渝
生无路而勤为径
展开
-
C/C++预定义编译宏
Pre-defined C/C++ Compiler Macroshttps://sourceforge.net/p/predef/wiki/Home/The macros are found here:Standards Compilers Libraries Operating systems ArchitecturesGeneral guidelines are ...转载 2019-10-26 21:56:45 · 2815 阅读 · 0 评论 -
<C++>指针和二维数组
在C++中,二维数组元素值在内存中是按行的顺序存放的,即先存二维数组的第一行数据,然后再存储第二行数据,一次类推,可以把它看成是一个特殊的一维数组。因此,与一维数组类似,可用指针变量来访问二维数组。我们可以像使用一维数组一样,对二维数组进行操作。但是那样非常麻烦,所以C++提供了关于二维数组的单独操作方法。 首先搞清楚三个概念: 1.二维数组行首地址原创 2017-11-09 12:52:08 · 729 阅读 · 0 评论 -
<C++>预编译处理
预处理程序又称预处理器,它包含在编译器中。预处理程序首先读源文件。预处理的输出是“翻译单元”,它是存放在内存中的临时文件。编译器接受预处理的输出,并将源代码转换成包含机器语言指令的目标文件。 预处理程序对源文件进行第一次处理,它处理的是预处理命令。C++提供的预处理命令主要有3种:文件包含命令(头文件),宏定义命令,条件编译命令。 1.文件包原创 2017-11-09 13:01:58 · 610 阅读 · 0 评论 -
【C++11】新特性——引入nullprt
转自:http://blog.csdn.net/huang_xw/article/details/87643461. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1转载 2017-12-10 14:46:40 · 346 阅读 · 0 评论 -
C++ static、const和static const类型成员变量声明以及初始化
C++ static、const和static const 以及它们的初始化const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是转载 2017-12-24 22:56:35 · 556 阅读 · 0 评论 -
C++类静态成员函数,静态成员变量
(1)静态成员函数与非静态成员函数异同:无论静态函数还是非静态函数,都是属于类的(这一点与数据成员的静态非静态不同),对象并不拥有函数的拷贝.两者的区别在于:非静态的函数由类对象(加.或指针加->;)调用,这时将向函数传递this指针.而静态函数由类名(::)(或对象名.)调用,但静态函数不传递this指针,不识别对象个体,所以通常用来对类的静态数据成员操作.程序最终都将在内存中执行...转载 2018-08-16 10:19:46 · 787 阅读 · 0 评论 -
C++如何实现用大括号“{}”初始化vector
转载自:https://www.jianshu.com/p/ffbb7d6403b3在C++11中,vector的初始化和等号赋值都出现了这样的语法vector<int> nums({1, 2, 3, 4, 5});vector<int> nums3 = vector({1, 2, 3, 4, 5});vector<int> nums2;nums...转载 2019-07-15 13:13:07 · 6107 阅读 · 2 评论 -
C++ const与constexpr关键字
关键字constexpr于 C++11 中引入并于 C++14 中得到改善。它表示常数表达式。与const相同,它可应用于变量,因此如果任何代码试图修改该值,均将引发编译器错误。与const不同,constexpr也可应用于函数和类构造函数。constexpr指示值或返回值是常数,并且如果可能,将在编译时计算值或返回值。1.constexpr变量 con...转载 2019-07-07 14:35:33 · 1271 阅读 · 0 评论 -
C++类六大函数、空类默认有的成员函数
一 C++类六大成员函数 构造函数、析构函数、拷贝构造函数、移动构造函数、拷贝赋值、移动赋值。 以class A为例:// C++ 类的六大成员函数class A{public: // 1. 构造函数 A(); // 2. 析构函数 ~A(); // 3. 拷贝构造函数 A(const A &); // 4. 移动构造函数...原创 2019-07-19 10:23:31 · 1023 阅读 · 0 评论 -
C++位域, 重载++、--、重载bool示例
typedef struct min_index{ using uint8 = typename unsigned char; uint8 _val : 2; // 内部数据占用2字节空间 min_index() : _val(0) {} min_index(uint8 val) : _val(val) {} // 重载数据类型 operator uint...原创 2019-08-08 18:54:22 · 1315 阅读 · 0 评论 -
C++ std::string字符串格式化
很遗憾的是,C++ 标准库 std::string并没有提供类似于sprintf之类的字符串格式化函数,所以就自己来实现咯。#include <memory>#include <cstdio>#include <string>template<typename ... Args>static std::string formatSt...原创 2019-08-14 15:44:29 · 5144 阅读 · 0 评论 -
C++ 类型安全的枚举enum class
通常情况下,我们定义一个枚举类型:/*! \enum The direction of axis.*/enum AxisDirection { AxisPositive, ///< The positive direction of axis [+]. AxisNegative ///< The negative direction of axis [-]....原创 2019-08-11 00:11:54 · 782 阅读 · 0 评论 -
6.内存的布局
一块内存分为多个部分,分别存放不同的数据,它是与CPU进行沟通的桥梁。一、内存布局原创 2017-09-21 12:49:14 · 697 阅读 · 1 评论 -
<C++>15.this指针
15.this指针一、概述1、概念:this指针是隐含与每一个成员函数中的特殊指针。它指向正操作该成员函数的对象。2、this指针的产生:当对象调用成员函数时,程序先将对象的地址赋予this指针,然后调用成员函数。 二、应用举例/* this_ptr.c */#include using原创 2017-10-05 20:35:45 · 324 阅读 · 0 评论 -
<C++>14.构造函数的重载与拷贝构造函数
14.构造函数的重载与拷贝构造函数一、构造函数的重载在一个类中可以定义多个构造函数,以便对类的对象提供不同的初始化方法,以适应不同的情况。这成为构造函数的重载注意:在一个类中,当无参数的构造函数和带默认参数的构造函数重载时,有可能产生歧义。例:class A{public:A(){}A(原创 2017-10-05 18:07:01 · 634 阅读 · 0 评论 -
<C++>8.C++建立类的原因和类的构成
建立类的原因以及类的构成一、概述:类是一种用户自定义的复杂数据类型,它将不同类型的数据与这些数据相关的操作(通常是函数)封装在一起的集合。类与C语言中的结构体类似。二、为什么要建立类?C++从C语言扩展而来,类与结构体类似,C++为什么不直接沿用C中的结构体而要建立类呢?C语言结构体的缺陷:一旦建立了一个结构体变量,就可以在结构体外直接访问数据,无法对数据进行保护和原创 2017-09-23 21:12:30 · 644 阅读 · 0 评论 -
<C++>7.new、delete动态管理堆内存
new、delete动态管理堆内存计算机内存分为四个段:栈、堆、数据段、代码段。其中的堆内存由用户管理。在C语言中,我们使用malloc、calloc、relloc以及free来动态管理堆内存。C++中则使用运算符new和delete。new和delete性能更加优越,使用更加灵活。一、new1、指针变量名 = new 类型;从堆中分配一块内存与类型大小相适应的内存空间,并将首地址原创 2017-09-23 15:08:11 · 441 阅读 · 0 评论 -
<C++>5.如何全方位理解C++中的“引用”?
引用一、概述在C++中,变量的“引用”就是对变量起别名,因此引用也称为别名。与C语言中的typedef有很大区别,不要混淆:1、typedef是对变量类型起别名,如整型,结构体类型等。例:typedef int datatype;---datatype就等于int。2、引用则是对变量起别名。比如int a; ----引用是对变量a起别名,而不是对int。 二、引用格式类原创 2017-09-23 18:12:22 · 419 阅读 · 0 评论 -
<C++>4.重载函数
C++重载函数一、与C的对比说明:在c语言中,同一作用域内,函数名必须是唯一的,不允许出现同名的函数。但是在C++中,允许在同一作用域内可以定义同名的函数。二、前提:1、函数参数的类型不同。2、函数参数的个数不同。3、函数参数的类型不同,个数也不同。三、详细说明:当两个以上的函数共用一个函数名,但是形参的个数或者类型不同,编译器根据实参与形参的类型及个数的最佳匹配。原创 2017-09-22 23:33:11 · 460 阅读 · 0 评论 -
<C++>3.带有默认值的函数
C++带默认参数值的函数一、概述:C++允许实参个数与形参不同。方法是在声明函数原型或定义函数时,为一个或多个形参指定默认值。调用此函数时,若省略其中某一实参,将使用默认值。例:int add(int x=1, int y=2);此函数有3种调用方式:①add(); ==>x=1, y=2; -------x使用默认值1,y只用默认值2。②add(3); ==>x=原创 2017-09-22 23:27:57 · 650 阅读 · 0 评论 -
<C++>2.命名空间
2、命名空间一、命名空间的作用一个软件通常是由多个开发人员合作完成,难免会产生命名重复的问题。命名空间帮助开发人员在开发新的软件组件或模块时不会与已有软件组件或者模块产生标识命令冲突,从而解决了程序中同名表示符存在的潜藏危机。二、命名空间的定义namespace 命名空间标识符{成员的声明;// 例如类、对象、函数、变量以及结构体等。}原创 2017-10-02 00:15:22 · 1206 阅读 · 0 评论 -
<C++>9.类成员函数的定义
8.类成员函数的定义一、概述类的成员函数也是函数,它也有函数名、返回值与参数,用法与普通函数是一样的。类的成员函数权限很高,能够访问本类中的任何成员,它也有公有、保护、私有之分。公有的成员函数既可以在类内调用,也可以在类外调用;保护的成员函数只能在类内调用或者派生类内调用;私有的成员函数只能在类内调用。 二、普通成员函数的定义此种情况以普通函数的定义方式定义即可,原创 2017-10-02 00:37:15 · 796 阅读 · 0 评论 -
<C++>10.对象的定义和使用
10. 对象的定义和使用一、类与对象关系将类看作我们自定义的一种数据类型,而对象就是这中数据类型的变量。二、对象的定义两种方法:1、在声明类的同时,直接定义对象(与结构体类似)。例:class A{int a;}op1, op2;声明类A的同时,定义了两个对象op1和op2。2、声明类之后,在使用时定义对象。例:原创 2017-10-03 01:41:54 · 592 阅读 · 0 评论 -
<C++>11.构造函数
11.构造函数一、概述当声明一个类对象时,编译程序需要为对象分配存储空间,为数据成员赋初值,即进行必要的初始化。但是类申明体中不能给数据成员直接赋初值,这就需要利用类的构造函数来初始化类的成员。构造函数是一种特殊的成员函数,它的主要作用就是为类的对象分配空间,进行初始化。注意:1、构造函数的函数名必须与类名相同。2、构造函数可以有任意原创 2017-10-03 01:48:24 · 435 阅读 · 0 评论 -
<C++>12.析构函数
12.析构函数一、概述析构函数也是一种特殊的成员函数,它执行与构造函数相反的操作。构造函数用于为类的对象分配空间,析构函数用于撤销对象时的一些清理任务,如释放分配给对象的内存空间。二、定义形式类内部:~类名(){}类外部:类名::~类名(){}需要在类内部声明三、说明1、析构函数与构造函数名字相同,原创 2017-10-03 02:22:22 · 1675 阅读 · 0 评论 -
<C++>13.构造函数和析构函数的调用顺序
13.构造函数和析构函数的调用顺序1、全局对象的构造函数在程序中的所有函数(包括main函数)执行之前调用。当main函数执行完毕或调用exit函数时,调用其的析构函数。 2、局部对象(函数中定义的对象)在建立对象时调用其构造函数。若函数被多次调用,每次建立对象时都要调用构造函数。函数调用结束、对象释放前先调用析构函数。 3、若定义了静态局部对象,则只在程序第一次调用此原创 2017-10-03 02:32:58 · 565 阅读 · 0 评论 -
<C++>1.作用域标识符
一般情况下,若有两个同名的变量,其中一个是全局变量,另一个是局部变量,那么局部变量在其zhong'yong'yu原创 2017-09-22 23:40:00 · 455 阅读 · 0 评论