C++
贾作真时真亦贾
吾日三省吾身
展开
-
C++中的dynamic_cast和dynamic_pointer_cast
dynamic_cast:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理。主要用途:将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数。转换方式:dynamic_cast< type* >...原创 2019-08-02 16:23:16 · 16764 阅读 · 0 评论 -
C++中的shared_ptr(智能指针)
头文件<memory>特点:(1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。(2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占1个引用)(3) 在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。std::shared_ptr<Test> p1(new Test...原创 2019-08-02 14:59:25 · 972 阅读 · 0 评论 -
C++中static_assert关键字(静态断言)
static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。语法:static_assert(常量表达式,提示字符串)。如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串。特点:(1)编译时...原创 2019-08-02 10:03:57 · 1428 阅读 · 0 评论 -
C++虚函数后跟const
#include <iostream>using namespace std;class Base{public: virtual void print() const;};void Base::print() const{ cout << "Base::print()" << endl;}class Test : pu...原创 2019-08-01 16:29:56 · 3341 阅读 · 0 评论 -
C++虚函数后加 = 0
虚函数后面加 = 0,表示这个函数为纯虚函数,纯虚函数的一般形式:virtual 函数类型 函数名 (参数表列) =0;特点:1.纯虚函数没有函数体;2.一个类里如果包含=0的纯虚函数,那么这个类就是一个抽象类3.抽象类不能具体实例化(不能创建它的对象),而只能由它去派生子类4.在派生类中对此函数提供定义后,它才能具备函数的功能,可被调用。...原创 2019-08-01 15:36:14 · 8876 阅读 · 1 评论 -
C++中virtual(虚函数)的用法
在面向对象的C++语言中,虚函数(virtualfunction)是一个非常重要的概念。什么是虚函数: 虚函数是指一个类中你希望重载的成员函数 ,当你用一个 基类指针或引用 指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。 ——摘自MSDN例:#include <iostream>#include <cstdio>u...转载 2019-08-01 15:00:38 · 540 阅读 · 0 评论 -
C++中delete函数
在C++中delete函数用于回收new分配的内存空间。C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。在针对简单的基本数据类型,使用delete也可...原创 2019-07-31 17:21:33 · 28846 阅读 · 2 评论 -
C++中resize函数的用法
resize(),设置大小;reserve(),设置容量;resize()是分配容器的内存大小,而reserve()只是设置容器容量大小,但并没有真正分配内存。resize()可以传递两个参数,分别是大小和初始值,初始值默认为0,reserve()只能传递一个参数,不能设置初始值,其初始值为系统随机生成。例:#include<iostream>#include&...原创 2019-07-31 11:20:27 · 30846 阅读 · 1 评论 -
C++中erase函数的用法
erase函数是一个删除容器中元素的函数,包括顺序容器和关联容器。基本用法如下:container.erase(p)-----从container中删除迭代器p指定的元素,p必须指向c中的一个真实元素,不能等于container.end()container.erase(b,d)------从container中删除迭代器对b和d所表示的范围中的元素,返回d所在下标。具...原创 2019-07-31 11:04:54 · 5977 阅读 · 3 评论 -
C++中命名空间相同自动合并
在单个.cpp文件中时:#include<iostream>#include<cstdio>#include<string>using namespace std;namespace cam{ int x=6;}namespace cam{ int y=5;}namespace cam{ int w=x*y;...原创 2019-08-14 10:16:50 · 713 阅读 · 0 评论