c++知识点锦集
文章平均质量分 67
傻月菇凉
这个作者很懒,什么都没留下…
展开
-
知识点锦集(七)
八.C++里面所有的动作不全是有main()函数引起对于C++程序而言,静态变量、全局变量、全局对象的分配早在main()函数之前。例如,全局变量在编译阶段就分配好空间,但局部变量是在函数调用时才按照声明顺序由递减的方式分配空间。下列程序在执行时,首先初始化全局变量。a是类A的对象,则会调用该对象的析构函数,然后再进入main()函数。能否在main()函数执行完再执行一段代码?答案是“...原创 2018-08-17 22:22:17 · 162 阅读 · 0 评论 -
sizeof
sizeof是关键字sizeof是数据类型关键字,而非函数。 类型 关键字 数据类型14个 void,char,int,float,double,short,long,signed, unsigned,struct,union,enum,typedef,sizeof 控制类型6个 auto,static,extern,register,const...原创 2018-08-30 09:23:15 · 9294 阅读 · 0 评论 -
预处理
C/C++头文件中的ifndef/define/endif的作用防止该头文件被重复引用。假设工程中有4个文件:main.cpp、b.h、c.h、d.h。main.cpp的头部是#include”b.h”、#include”c.h”。b.h和c.h的头部都是#include”d.h”。d.h中有int i;定义。编译器编译main.cpp时,先根据#include”b.h”去编译b....原创 2018-09-02 11:38:53 · 210 阅读 · 0 评论 -
友元函数
引入友元函数的原因类具有封装、继承、多态、信息隐藏的特性,只有类的成员函数才可以访问类的私有成员,非成员函数只能访问类的公有成员。为了使类的非成员函数访问类的成员,唯一的做法就是将成员定义为public,但这样做会破坏信息隐藏的特性。基于以上原因,引入友元函数解决。必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包...原创 2018-09-03 10:27:37 · 12649 阅读 · 0 评论 -
复制构造函数
简述复制构造函数是一种特殊构造函数,在生成一个实例时,一般会同时生成一个默认的复制构造函数,复制构造函数完成一些基于同一类的其他对象的构建及初始化工作。特点复制构造函数名与类名同名,因为它是一种构造函数,并且函数不指定返回类型。该函数只有一个参数,并且是某个对象的引用。每个类都必须有一个复制构造函数。如果程序员没有显式地定义一个复制构造函数,C++编译器会自动生成一个缺省...原创 2018-09-03 11:11:35 · 2516 阅读 · 0 评论 -
类的成员变量的初始化顺序
类的成员变量的初始化顺序只与变量在类中的声明顺序有关,与在构造函数中的初始化列表顺序无关。注意:是与声明顺序有关。#include<iostream>using namespace std;class A {public: //我们原意是先初始化b,再用b初始化a。 //但结果可以看出,类的成员变量的初始化顺序与声明顺序有关,先初始化的a,再初始化...原创 2018-09-03 11:34:43 · 2874 阅读 · 0 评论 -
explicit关键字
防止隐式转换在C++中,如下声明是合法的:class String{ String(const char*p);}String s1="hello";上例中,String s1=”hello”;会执行隐式转换,等价于String s1=String(“hello”)。为了避免这种情况发生,C++引入了explicit,它可以阻止不应该允许的经过转换构造函数进行的隐...原创 2018-09-03 14:26:53 · 148 阅读 · 0 评论 -
constexpr
constexptr和常量表达式常量表达式是指值不会改变并且在编译过程中就能得到计算结果的表达式。编译过程中得到计算结果。字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。(注意!!!)对于这条语句:const int sz = get_size();,sz本身是常量,但它的具体值...原创 2018-09-18 11:07:26 · 14805 阅读 · 2 评论 -
std::thread(线程)
转自:https://www.cnblogs.com/whlook/p/6573659.html创建线程创建线程比较简单,C++提供头文件thread,使用std的thread实例化一个线程对象创建。std::thread 在 #include 头文件中声明,因此使用 std::thread 时需要包含 #include 头文件。#include<iostream>...转载 2018-09-13 11:37:15 · 42440 阅读 · 4 评论 -
C++11新特性——nullptr
转自:https://blog.csdn.net/u011304970/article/details/72229013C/C++中的NULLC++98中NULL是个宏定义,明确规定NULL是个整型0值:/* Define NULL pointer value */#ifndef NULL #ifdef __cplusplus #define NU...转载 2018-09-04 11:29:57 · 1876 阅读 · 0 评论 -
指针和引用
指针一般的变量包含的是实际的真实数据,而指针包含的是一个指向内存中某个位置的地址。可以动态分配内存(new操作)。为动态数据结构(树和链表)提供支持。遍历数组,解析字符串。引用引用就是别名的意思。引用用于定义一个变量共享另一个变量的内存空间。引用和常引用一般用于传递函数参数,进而提高开发效率。引用和指针的相似处指针指向一块内存,它的内容是所指内存的地址。...原创 2018-09-01 16:16:17 · 136 阅读 · 0 评论 -
知识点锦集(六)
七.switch语句基本格式switch语句基本格式如下。其中case中的语句和break、default中的语句均可省略。表达式——称为“条件表达式”,用作判断条件,取值为整型、字符型、布尔型或枚举型。 注意,不能是float型和double型,存在误差。常量表达式——由常量构成,取值类型与表达式相同。 语句——可以是一条语句也可以是一组语句。 switch (表达...原创 2018-08-15 20:37:30 · 228 阅读 · 0 评论 -
知识点锦集(一)
一.static(静态变量)局部变量:只对定义自己的函数体可见。 普通局部变量:存储在栈中,函数执行完销毁。静态局部变量:存储在静态存储区,函数执行完仍存在(直到程序运行结束)。 #include&amp;amp;lt;iostream&amp;amp;gt; using namespace std; int fun1(int i){ static int res=i++; ...原创 2018-08-09 10:43:48 · 303 阅读 · 0 评论 -
知识点锦集(二)
三.volatile在程序设计中的作用当读取一个变量时,为提高存取速度,编译器优化过程中有时会先把变量读取到一个寄存器内;当再取变量值时,直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值复制到该寄存器中,保持一致。(本线程中变量值改变,本线程中寄存器值改变)编译器优化时可能出现问题,如遇到多线程编程时,变量的值可能因为别的线程而改变了,而寄存器的值不会相应改变(其他线程中变...原创 2018-08-09 11:51:30 · 151 阅读 · 0 评论 -
知识点锦集(三)
五.vector内存分配与释放vector的内存分配 vector容器的内存空间只增不减。C++ Primer中提及:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储(数组)。当存储空间达到上限时,vector容器会申请新的空间(新空间=2*旧空间),拷贝元素,撤销旧空间(vector的迭代器会失效)。因此,vector进行内存分配时,实际分...原创 2018-08-09 16:33:47 · 173 阅读 · 0 评论 -
知识点锦集(四)
六.虚函数什么是虚函数指向基类的指针在操作它的多态类对象时,会根据不同的类对象(基类指针指向派生类对象)调用其相应的函数 ,这个函数就是虚函数,虚函数用virtual修饰函数名。虚函数的作用:在程序的运行阶段动态的选择合适的成员函数。在定义虚函数后,可以在基类的派生类中对虚函数进行重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型(参数类型的顺序也要一致),实现...原创 2018-08-09 18:55:51 · 154 阅读 · 0 评论 -
知识点锦集(五)
七.const的作用说明常类型也称为const类型,是指使用类型修饰符const说明的类型。const是C和C++中常用的关键字,在C语言中,它主要用于定义变量为常类型以及修饰函数参数与返回值(变量、函数参数、返回值)。而在C++中还可以修饰函数的定义,定义类的成员函数。常量必须初始化。编译器一般不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间...原创 2018-08-11 21:09:28 · 154 阅读 · 0 评论 -
重载、覆盖、隐藏的区别
重载重载是指同名函数具有不同的参数表。在同一访问区域内声明的几个具有不同参数列表(参数的类型、个数、顺序不同)的同名函数,程序会根据不同的参数列来确定具体调用哪个函数。对于重载函数的调用,编译期间确定,是静态的,它们的地址在编译期间就绑定了。重载不关心函数的返回值类型。函数重载的特征相同的范围(同一个类中)函数名字相同参数不同virtual关键字可有可无。实例c...原创 2018-08-24 10:06:49 · 5667 阅读 · 3 评论 -
C++11新特性——default函数和deleted函数
转自:http://blog.jobbole.com/103669/default函数default函数作用于类的特殊成员函数,为其自动生成默认的函数定义体,提高代码的执行效率。类的特殊成员函数:默认构造函数析构函数复制构造函数拷贝赋值运算符取址运算符const取址运算符前四个特殊函数负责实例化对象、销毁对象以及复制对象。如果类中没有定义构造函数,则会生成一个默认构造函...转载 2018-09-04 10:53:56 · 2869 阅读 · 0 评论 -
类型别名声明、auto类型指示符、decltype类型指示符
类型别名声明类型别名是一个名字,它是某种类型的同义词。使用类型别名的用处:让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。有两种方法可用于定义类型别名。(1)关键字typedef;(2)别名声明using。关键字typedef:含有typedef的声明语句定义的不再是变量而是类型别名。(注意!!!)typedef是有作用域的。...原创 2018-09-18 15:57:59 · 464 阅读 · 0 评论