![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 55
无聊的吃货
这个作者很懒,什么都没留下…
展开
-
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit转载 2017-09-24 16:03:14 · 174 阅读 · 0 评论 -
fcntl.h头文件和unistd.h头文件
fcntl.h头文件和unistd.h头文件fcntl.h定义了很多宏和open,fcntl函数原型unistd.h定义了更多的函数原型 close(关闭文件)表头文件#include定义函数int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为转载 2017-09-24 17:03:14 · 743 阅读 · 0 评论 -
宏
宏名字不能重载,而且宏处理器不能处理地柜调用: #define PRINT(a, b) cout<<(a)<<(b)#define PRINT(a,b,c) cout<<(a)<<(b)<<(c) /*重复定义,不允许重载*/#define FAC(n) (n>1)? n*FAC(n-1): 1 ...原创 2018-10-11 14:21:17 · 106 阅读 · 0 评论 -
引用
对"普通"T&的初始化必须是一个类型T的左值.对一个const T&的初始化不必是一个左值甚至可以不是类型T的;例如: double& dr = 2; // 错误,要求左值 const double& cdr = 2; // ok 在这种情况下:[1] ...原创 2018-10-11 14:22:02 · 187 阅读 · 0 评论 -
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承...原创 2018-10-20 19:41:29 · 178 阅读 · 0 评论 -
静态常量整数成员在class内部直接初始化
如果class 内含const static integral data member,那么根据C++标准规格,我们可以在class之内直接给予初值.所谓integral泛指所有整数型别,不单只是指int.下面是一个例子:#include <iostream>template <typename T>class TestClass {public: s...原创 2018-10-30 21:45:01 · 329 阅读 · 0 评论 -
智能指针share_ptr使用陷阱
当使用share_ptr时,如果讲share_ptr<T>作为函数的返回值,要避免使用引用返回,如以下代码:class A {public: A() { std::cout << "Construct A" << std::endl; } A(const A& a) { st...原创 2018-10-30 21:48:25 · 684 阅读 · 0 评论 -
C—动态内存分配之malloc与realloc的区别
在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap)。还有另一个内存区域,称为栈(stack),其中的空间分配给函数的参数和本地变量。在执行完该函数后,存储参数和本地变量的内存空间就会释放。堆中的内存是由程序员控制的。在分配堆上的内存时,由程序员跟踪所分配的内存何时不再需要,并释放这些空间,以便于以后重用它们。 使用动态内存很明显的好处就是:不需要预先分配存储空间且分配的...转载 2018-11-03 15:15:58 · 323 阅读 · 0 评论