![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
学无止境LL
这个作者很懒,什么都没留下…
展开
-
显式/隐式类型转换/初始化
隐式和显式初始化a) C++隐式初始化int ival(1024);string hello("hello rookie");b) C++显式初始化int val = 1024string hello = "hello rookie"*这里的“=”语法是拷贝构造函数,而不是赋值运算。因为一个新对象被定义一定要有一个构造函数而不是一个赋值操作string hello;hell...原创 2019-05-30 09:48:26 · 947 阅读 · 0 评论 -
调用约定(calling convention)和名称修饰(name decoration)
来源: https://blog.csdn.net/bird67/article/details/4019044调用约定(calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同语言定义了不同的调用约定。在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改...转载 2019-07-19 11:52:28 · 350 阅读 · 0 评论 -
char *、const char*和string三者转换
const char* 和string转换cosnt char *转换为string,直接复制即可。荔汁: const char* temp = "rookie" string s = temp;string转换为const char* ,利用c_str()荔汁: string s = "rookie" const char *temp = s....原创 2019-05-30 09:14:54 · 3584 阅读 · 0 评论 -
C++ STL 六大组件概览
参考https://zhuanlan.zhihu.com/p/31505598STL六大组件容器(container):在实现上,是类模板(class template)序列容器:vector、list、deque 关联容器:set、map、迭代器(iterator):一套访问容器的接口,行为类似于指针。他为不同算法提供的相对统一的容器访问方式,使得设计算法时无需关注过多数据,(...原创 2019-07-12 14:23:16 · 247 阅读 · 0 评论 -
struct与class的区别
C++中的struct与class,基本没有什么区别。C和C++中的struct的主要区别是C中的struct不可以含有成员函数。C中的struct在引用的时候,必须要带有typedef。无论是定义数据结构,还是定义对象。功能struct能包含成员函数struct能继承struct能实现多态区别struct与class最本质的一个区别就是默认的访问控制:默认的继承访问权限:stru...原创 2019-06-29 20:03:44 · 436 阅读 · 0 评论 -
弹性数组(柔性数组、灵活数组)
弹性数组C99中,结构重的最后一个元素允许是位置到小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小可变的数组,可变长数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔型数组成员的结构用malloc函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔型数组的预期大小。可变长数组C89标准规定,数组大小...原创 2019-06-29 20:01:14 · 3416 阅读 · 0 评论 -
malloc、alloc、calloc、realloc
allocalloc是向栈申请内存,因此无需释放。**功能:**返回一个指向n个连续字符存储单元的指针。利用afree§释放已经分配的存储空间,以便以后使用。函数原型: char *alloc(int n);malloc(memeory allocation,动态内存分配)malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后,调用函数memset来初始...原创 2019-06-29 17:20:49 · 5982 阅读 · 0 评论 -
C语言关键字restrict
简介关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部狗屎基于该指针的,即不存在其他进行修改操作的途径;这样的后果是帮助编译器进行更好的优化,生成更有效率的汇编代码。来源例如int i = 0;int *a = &i;int *b = &i;这样会存在一个问题。int foo(int *a,int *b){ *a ...原创 2019-06-29 16:43:03 · 753 阅读 · 0 评论 -
memcpy、strcpy、strncpy、strncpy_s拷贝函数总结
memcpy()函数函数原型void *memcpy(void *dest,const void *src,size_t n);功能由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。头文件#include <string.h>说明src和dest所指内存区域不能重叠,函数返回指向dest的指针。与strcpy相比,memcpy...原创 2019-06-29 16:27:19 · 1881 阅读 · 0 评论 -
C/C++内存分区
参考百度百科(与以往认知有偏差)C/C++程序的内存分区(Memory Partition),可划分为四大内存分区:堆、栈、全局/静态存储区和代码区。堆区由编程人员手动申请,手动释放,若不手动释放,程序结束后由系统回收,生命周期是整个程序运行期间。使用malloc或者new进行堆的申请,堆的总大小为机器的虚拟内存的大小。(ps-self view: 由mallc申请的叫做堆区,new申请的叫...原创 2019-07-09 20:59:22 · 198 阅读 · 0 评论 -
C++new和malloc的区别
new和malloc的10点区别1.申请的内存所在位置new操作符从自由存储区上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语。是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内...原创 2019-06-03 21:51:00 · 223 阅读 · 0 评论 -
C++ const详解(附带static)
const的基本概念const叫常量限定符,用来限定特定变量,以告知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。const修饰基本数据类型1.const修饰一般常量及数组const int a = 10; int const a = 10;const int arr[3] = {1,2...原创 2019-06-02 17:14:40 · 344 阅读 · 0 评论 -
C++四大显式类型转换
static_cast、dynamic_cast、reinterpret_cast、const_cast详细参考《C++的设计和演化》。最好不好使用C风格的强制类型转换。他们都属于操作符,因此他们不属于任何的命名空间(namespace),也就不用包含任何的头文件就可以使用。转换时期static_cast:编译期转换。reinterpret_cast:const_cast:编译期转换...原创 2019-06-02 14:22:48 · 433 阅读 · 0 评论 -
C++类(构造函数和析构函数、子类继承和调用父类的构造方法)
为什么要有构造、析构函数类的数据成员不能在类的声明时候初始化,为了解决这个问题,使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时候自动调用。析构函数是对象不再使用的时候,需要清理资源的时候调用。为什么类的数据成员不能在类的声明时候初始化?此处留疑。我觉得他跟结构体的性质应该是一样的,哈哈。构造函数构造函数的调用:一般情况下...原创 2019-06-06 19:46:50 · 3146 阅读 · 1 评论 -
重载输入输出操作符为什么用引用
https://blog.csdn.net/lyh__521/article/details/49601489为什么重载输入输出操作符要加引用?通常情况下,输出运算符的第一个形参是一个非常量的ostream/istream对象的引用。非常量是因为向流中写入内容会改变其状态;用引用是因为流对象不支持复制。输入、输出运算符否必须是非成员函数,要符合C++输入输出的函数形式。否则,他们的左侧运算...转载 2019-08-15 13:09:32 · 1327 阅读 · 8 评论