C++11智能指针
摘要:1、背景:C++程序设计中,对堆内存的操作非常频繁,堆内存的申请和释放都是由程序员来管理。然而在复杂的场景时很容易导致堆内存泄漏(忘记释放)、内存二次释放和程序出现异常时泄漏等情况。为了更好的管理堆内存因此引入了智能指针。 2、原理:智能指针是一个类,类的构造函数中传入普通指针,析构函数中释放传入的
阅读全文
posted @
2020-05-24 21:24
Love63
阅读(133)
推荐(0)
C++管理数据内存的方式
摘要:自由存储:函数内部定义的常规变量; 静态存储:全局变量和static声明的变量; 动态存储:使用new和delete运算符操作的内存; C++11新增了第四种类型——线程存储
阅读全文
posted @
2019-10-18 17:57
Love63
阅读(231)
推荐(0)
C++构造函数和成员变量初始化
摘要:成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关;因为成员变量初始化顺序与变量在内存中的顺序有关,内存中的排列顺序在编译时根据变量的定义次序决定;
阅读全文
posted @
2019-10-18 10:32
Love63
阅读(932)
推荐(0)
C++ this和*this的区别
摘要:this返回的是当前对象的地址(指向当前对象的指针); *this返回的是当前对象的克隆和本身(若返回类型是A,则是克隆,若返回类型是A&,则是本身);
阅读全文
posted @
2019-10-07 23:10
Love63
阅读(1039)
推荐(0)
C++空类中含有哪些默认的函数
摘要:1、默认构造函数2、析构函数3、拷贝构造函数4、赋值运算符(等号:operator=)5、取址运算符(operator&)(一对,一个非const的,一个const的) 有争议,跟具体编译器相关,有的生成,有的不生成 例: class Empty{public: Empty(); // 缺省默认构造
阅读全文
posted @
2019-10-06 17:30
Love63
阅读(1178)
推荐(0)
const关键字的用途
摘要:转载:https://blog.csdn.net/qq_40416052/article/details/82655736
阅读全文
posted @
2019-10-06 16:48
Love63
阅读(219)
推荐(0)
哪些函数不能成为虚函数?
摘要:不能被继承和不能被重载的函数; 1)普通函数 普通函数不属于成员函数,是不能被继承的。普通函数只能被重载,不能被重写,因此声明为虚函数没有意义。因为编译器会在编译时绑定函数。 而多态体现在运行时绑定。通常通过基类指针指向子类对象实现多态。 2)友元函数 友元函数不属于类的成员函数,不能被继承。对于没
阅读全文
posted @
2019-10-06 16:20
Love63
阅读(2420)
推荐(0)
C++是不是类型安全带的?
摘要:不是,两个不同类型的指针之间可以强制类型转换(reinterpret_cast)。
阅读全文
posted @
2019-10-06 16:05
Love63
阅读(177)
推荐(0)
构造函数和析构函数调用的顺序
摘要:构造函数调用顺序:先调用基类的构造函数,再调用对象成员构造函数,最后调用派生类的构造函数 析构函数的调用顺序:先调用派生类的构造函数,再调用对象成员构造函数,最后调用基类的构造函数;(与构造函数调用顺序相反)
阅读全文
posted @
2019-10-06 16:00
Love63
阅读(3833)
推荐(1)
delete与 delete []区别
摘要:delete只会调用一次析构函数 delete[] 会调用每个成员的析构函数
阅读全文
posted @
2019-10-06 15:57
Love63
阅读(156)
推荐(0)
bool、int、float、指针变量与"零值"比较的if语句
摘要:bool型数据:if ( flag ) { A;} else { B;} int型数据: if ( 0 == flag ) { A;} else { B;} 指针变量: if (NULL == flag) { A; } else {B;} float型数据: #define NUM (0.00000
阅读全文
posted @
2019-09-29 21:18
Love63
阅读(356)
推荐(0)
strcpy、strncpy、memcpy和memmove的区别
摘要:// Strncpy.cpp : 定义控制台应用程序的入口点。 /* strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*; strncpy函数用于将指定长度的字符串复制到字符数组中,并返回被复制后的dest, 是 C语言的库函数之一; memcpy指的是C和C++使用的内存拷贝函数,函数的功能是从源内存地址的起始位置开始...
阅读全文
posted @
2019-08-07 00:09
Love63
阅读(505)
推荐(0)
虚函数和纯虚函数的区别
摘要:虚函数:在类的成员函数定义前加 virtual 关键字,不仅有成员函数的声明,而且有成员函数的实现。虚函数被继承后仍为虚函数。 纯虚函数:纯虚函数是在基类中声明的虚函数,只有函数的声明没有函数的实现(virtual void funtion1()=0);派生类必须定义自己的实现方法。 区别: 虚函数
阅读全文
posted @
2019-07-29 23:07
Love63
阅读(651)
推荐(0)
联合体和结构体的区别
摘要:区别: 结构体是多个不同类型变量的组合,其占用的内存大小是所有变量大小的总和; 联合体是多个不同类型变量的组合,其占用内存的大小是联合体中最大的那个变量的大小;
阅读全文
posted @
2019-07-22 23:05
Love63
阅读(799)
推荐(0)
C++强制类型转换
摘要:一、static_cast转换 1.基本用法:static_cast<type-id> expression 2.使用场景: a、用于类层次结构中基类和派生类之间指针或引用的转换 上行转换(派生类 >基类)是安全的; 下行转换(基类 >派生类)由于没有动态类型检查,所以是不安全的。 b、用于基本数据
阅读全文
posted @
2019-07-22 22:22
Love63
阅读(159)
推荐(0)
C++ volatile关键字
摘要:作用: 要求每次直接从内存中读值而不是使用保存在寄存器里的备份.(易变的、不稳定的) 用途(主要用于嵌入式编程): 1) 并行设备的硬件寄存器;(如状态寄存器) 2)一个中断服务子程序中会访问到的非自动变量; 3)多线程应用中被几个任务共享的变量;
阅读全文
posted @
2019-07-20 23:39
Love63
阅读(116)
推荐(0)
用简单的语言描述C++ 是什么?
摘要:用简单的语言描述C++ 是什么? 答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
阅读全文
posted @
2019-03-17 23:14
Love63
阅读(430)
推荐(0)
C++中malloc / free 和 new / delete 的区别?
摘要:1、malloc/free 是C++/C语言的标准库函数,New/delete是C++运算符;都是用于申请动态内存和释放内存。 2、new做两件事:分配内存和调用类的构造函数,delete是:调用类的析构函数和释放内存。而malloc和free只是分配和释放内存。
阅读全文
posted @
2019-03-17 23:09
Love63
阅读(147)
推荐(0)
头文件中的ifndef/define/endif 是干什么用的
摘要:头文件中的ifndef/define/endif 是干什么用的? 答:防止头文件被重复包含。
阅读全文
posted @
2019-03-17 22:38
Love63
阅读(438)
推荐(0)
C++内存溢出和内存泄漏?
摘要:1、内存溢出 内存溢出是指程序在申请内存时没有足够的内存空间供其使用。原因可能如下: (1)内存中加载的数据过于庞大; (2)代码中存在死循环; (3)递归调用太深,导致堆栈溢出等; (4)内存泄漏最终导致内存溢出; 2、内存泄漏 内存泄漏是指使用new申请内存, 但是使用完后没有使用delete释
阅读全文
posted @
2019-03-17 22:35
Love63
阅读(3314)
推荐(0)