![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
skycrygg
这个作者很懒,什么都没留下…
展开
-
使用Code::Blocks不能进行Debug
选择最上面的 Setting → Debugger选择最左面的Default , 如果第一行的Executable path 显示红色没有给定路径的话使用 win+R 输入cmd 打开命令行,输入:mingw-get install gdb安装完成后,在Executable path添加 MinGW安装目录下的 \bin\gdb.exe...原创 2020-12-22 19:53:22 · 381 阅读 · 0 评论 -
c++智能指针--unique_ptr
在c++11标准中,提出了智能指针来帮助程序员管理动态内存(如果使用智能指针来管理栈上的内存,则在最后析构阶段释放内存时会出现错误)。智能指针主要有三种,分别是shared_ptr、unique_ptr与weak_ptr。本文主要讲的就是unique_ptr使用中的问题。unique_ptr与shared_ptr不同,某个时刻只能有一个unique_ptr指向其管理的动态内存上的对象。当这个unique_ptr销毁时,它所指向的对象也会被销毁。原理分析namespace std { te转载 2020-07-21 15:46:18 · 913 阅读 · 0 评论 -
c++智能指针--shared_ptr
众所周知,c语言与c++需要自行管理动态的内存。许多代码写到最后,防止内存泄漏需要花费程序员大量的心力。在c++11标准中,提出了智能指针来帮助程序员管理动态内存。智能指针主要有三种,分别是shared_ptr、unique_ptr与weak_ptr。本文主要讲的就是shared_ptr使用中的问题。shared_ptr首先需要说明的是,shared_ptr是一个模板类。为了让用户可以像使用内置指针一样使用它,这个类的设计者为它重载了解应用运算符*、成员访问运算符->、赋值运算符=还有向boo转载 2020-07-21 15:38:25 · 451 阅读 · 0 评论 -
c++继承体系中的成员函数调用问题探究
动态类型与静态类型当我们在继承体系中进行成员函数调用时,一个变量(或表达式)的静态类型与其动态类型与其息息相关。静态类型:一个变量(或表达式)的静态类型在编译时总是已知的,它是变量声明时的类型(或表达式生成的类型); 动态类型:是一个变量或表达式表示的内存中的对象的类型,往往直到运行时才可知。通常如果一个表达式(变量名也是表达式)不是引用也不是指针,则它的动态类型与静态类型永远一致。基类的指针或引用的静态类型可能与其动态类型不一致。我们都知道一个派生类对象的存储中基类部分与派生类部分是分开存储转载 2020-07-21 15:24:59 · 402 阅读 · 0 评论 -
c++中的模板实例化问题
在c++中,模板是非常常见并且好用的。基本每一个c++的库都会使用模板,对自己的适用类型进行扩展。本文主要讲的是模板的实例化问题。函数模板类模板模板实例化当模板被使用时才会实例化,这一特性意味着,相同的实例可能出现在多个对象文件中。举个例子就是说,当两个或多个独立编译的源文件使用了相同的模板,并提供了相同的模板参数时,每个文件中都会有该模板适用该参数的一个实例。上述的问题在小程序里不算什么,但是在一个大的程序中,在多个文件中实例化相同模板的额外开销会非常严重。在新标准中,我们可以通过转载 2020-07-20 17:09:59 · 2491 阅读 · 1 评论 -
c++中public、protected与private关键字
访问权限关键字(无继承关系时) public: 这个关键字代表对外界开放,用户可以通过一个对象直接进行其public成员的访问操作; protected: 这个关键字代表只对自己的派生类开放,对与普通用户不开放; private: 这个关键字代表只对自己内部的成员(或友元)开放,对其他任何外在用户(包括派生类对象)都不开放。 派生类继承来的基类部分的成员的访问权限说明派生类继承来的基类部分的成员的访问权限受到两个因素影响:在基类中该成员的访问说明符; 在派生类的派生列转载 2020-07-20 17:02:51 · 1024 阅读 · 0 评论 -
c++中类的拷贝控制操作
通常一个类的拷贝控制操作由以下三个函数来定义: 拷贝构造函数 拷贝赋值运算符 析构函数 以上这3个成员,如果在一个类中未自己定义时,编译器会为这个类自动生成默认的版本。三个成员共同构成了一个类基本的的拷贝控制与资源管理操作。=default与=delete的使用我们可以通过将拷贝控制成员定义为=default来显式地要求编译器生成合成版本的。在c++11标准以后我们可以通过将拷贝构造函数与拷贝赋值运算符定义为=delete来组织拷贝的发生。=delete告诉编...转载 2020-07-21 15:25:32 · 815 阅读 · 0 评论 -
c++中const与constexpr关键字
const变量的初始化时刻const修饰变量,表示这个变量是不可修改的,因此const变量必须初始化,一经初始化就不可修改。 如果const变量的初始化值是在编译时就可以确定,则在编译时初始化; 如果const变量的初始化值是在运行时才确定,则在运行时初始化; const int SIZE = 100;由于SIZE的值是在编译时就已经确定的,编译器会使用常量 100 来替代程序中出现的SIZE。vector<int> v;const int i = v.s转载 2020-07-20 16:44:34 · 1453 阅读 · 0 评论 -
c语言和c++语言中函数参数的传递
1 函数参数传递的本质在调用一个函数时进行参数传递(不只是讲参数列表里的参数,包括函数返回值的参数传递),其本质上进行的工作都是一样的,即使用实参初始化形参。实参与形参本质上是两个完全不同的变量,它们之间并没有更深入的联系,仅仅只是变量与初始值的关系而已。1.1 传值参数(包括传指针)很普通的那种,大家都了解的差不多。在此处需要强调一下,所谓传值,其实是指在使用实参初始化形参时,将实参的值拷贝一份到形参。此处我将传指针也归纳到了传值这边,因为都有拷贝操作。但是此处需要稍微提一下,有转载 2020-07-20 16:33:42 · 467 阅读 · 0 评论 -
c语言和c++语言中的类型转换
类型转换主要可以笼统的分为两大类:隐式类型转换与显式类型转换。注意:不论是隐式类型转换还是显式类型转换,在进行算术类型转换时,高精度转为低精度都会有精度损失,低精度转为高精度是没有。比如在有符号的char类型在与int类型进行转换时。将有符号char类型转换成int类型时,值是无损失的(不会发生变化的)。而int类型赋值给有符号char类型时其实进行的是截断式赋值。 例子:signed char sc1 = -128;//结果i1值为-128,将10000000自动扩展为111...10000转载 2020-07-20 15:57:10 · 1147 阅读 · 0 评论