C++基础
Philkk
这个作者很懒,什么都没留下…
展开
-
C++智能指针
智能指针主要是为了解决内存忘记释放、内存过早释放、内存多次释放等问题,从而更好地对内存进行管理。(个人理解)传统的裸指针虽然功能强大、使用灵活,但需要全程维护,容易出错。从而引入智能指针进行管理,可以把智能指针看做对于裸指针的包装。智能指针有四种:auto_ptr(c++98)、shared_ptr(c++11)、unique_ptr(c++11)、weak_ptr(c++11),其中auto_ptr已被unique_ptr替代,不推荐使用auto_ptr。智能指针是一种类模板。shared原创 2021-10-12 19:44:28 · 194 阅读 · 0 评论 -
常量引用与const修饰的引用形参
常量引用:原变量不能通过此引用(别名)修改。形式:char ch = 'a';const &b = a;const修饰的引用形参:原理与常量引用类似。形式:int func (const int &a) { return 1;}特点:1.不能通过函数形参修改实参,从而防止实参被误修改; 2.增加输入参数的灵活性:普通引用形参(没用const修饰)不允许输入参数为const修饰的值(常量引用或常量)或右值,用const修饰后则...原创 2021-10-08 00:15:03 · 500 阅读 · 0 评论 -
常量指针与指针常量
常量指针:指针指向的内容不能通过指针修改。形式一:char ch = 'a';const char * p = ch;形式二:char ch = 'a';char const *p = ch;指针常量:指针的本身存放的内存地址不能改变即指针的指向不能改变。形式:char ch = 'a';char * const p = ch; ...原创 2021-10-07 23:50:29 · 98 阅读 · 0 评论 -
C++内联函数
内联函数形式:inline int funcA(int a, int b) {//函数定义前加inline,为内联函数 return 1;}内联函数的特点:1.inline影响编译器,在编译阶段对内联函数进行处理,系统尝试将调用函数的动作替换为函数本体。从而提高性能;2.inline只是对编译器的一种建议,编译器可做可不做,这取决于编译器的诊断功能;3.普通函数的声明要写在头文件,定义要写在源文件。而内联函数的定义要写在头文件。因为其他调用这个内联函数的文件需要把函数本体include原创 2021-10-07 23:42:03 · 117 阅读 · 0 评论 -
malloc/free与new/delete
malloc/free是C中的函数,用于在堆区开辟释放空间。用法://malloc/free用法 int *p = (int*)malloc(sizeof(int)); if (p) { *p = 5; cout << *p << endl; free(p); }特点:1.需要显式指定开辟空间的字节长度; 2.malloc返回值为void *,需要类型转换。new/delete是C++中的操作符/关键字,三种用法...原创 2021-10-05 22:57:12 · 78 阅读 · 0 评论 -
C++内存分区
关于C++内存分区的说法多种多样。试图总结一下C++内存分区,不保证正确,如果有新发现再更新。代码区:存储代码编译后的二进制文件。静态存储区/全局区:存储全局变量,静态变量。动态存储区:栈:系统开辟释放。 堆:由程序员开辟释放。常量存储区:存字符串常量。.bss段:存未初始化的全局变量和静态变量。...原创 2021-10-05 22:43:49 · 62 阅读 · 0 评论