C++
C++基础知识
想名字多费事
编程小白入驻
展开
-
手动实现智能指针shared_ptr
#include <iostream>using namespace std;template<typename T>class sharedPtr{public: //默认构造、拷贝构造 sharedPtr(T* ptr=nullptr):_ptr(ptr),_pcount(new int(1)){cout<<"1"<<endl;}//每次创建类的新对象时初始化指针并将引用计数置为1 sharedPtr(const原创 2021-08-08 11:38:35 · 158 阅读 · 0 评论 -
指针和引用的区别
1、指针是一个变量,存储的是变量(对象)的地址,引用是变量的别名2、指针可以为空,引用定义时必须初始化3、指针在初始化之后可以改变指向,引用在初始化之后不可在改变4、指针可以有多级,引用只有一级5、sizeof指针得到的是本指针的大小,sizeof引用得到的是引用所指向变量的大小6、当把指针作为参数进行传递时,也是将实参的一个拷贝传递给形参,两者指向的地址相同,但不是同一个变量,在函数中改变这个变量的指向不影响实参,而引用却可以7、引用本质是一个指针,同样会占4字节内存;指针是具体变量,需要占原创 2021-05-17 08:10:25 · 17326 阅读 · 3 评论 -
万能头文件#include<bits/stdc++.h>
万能头文件#include<bits/stdc++.h>原创 2021-05-11 22:44:12 · 1334 阅读 · 0 评论 -
四种编程范式
#include <iostream>#include <cstdio>#include <cstdlib>#include <queue>#include <stack>#include <algorithm>#include <string>#include <map>#include <set>#include <vector>using namespace st原创 2021-05-03 10:01:54 · 2459 阅读 · 0 评论 -
attribute关键字
attribute关键字可以设置函数属性,如果设置成构造函数,则先于主函数执行#include <iostream>#include <cstdio>#include <cstdlib>#include <queue>#include <stack>#include <algorithm>#include <string>#include <map>#include <set>#i原创 2021-04-30 22:49:22 · 335 阅读 · 1 评论 -
c++中NULL和nullptr的区别
NULL来自C语言,一般由宏定义实现,而nullptr则是C++新增的关键字。C语言中NULL被定义为(void*)0,而在C++语言中,NULL则被定义为整数0。编译器定义如下#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif在C++中指针必须有明确的类型定义。但是将NULL定义为0带来的另一个问题是无法与整数的0区分。因为C++中允许有函数重载,所以可以试想如下函数定义情况:#include <原创 2021-04-18 21:09:46 · 249 阅读 · 0 评论 -
C++多态
文章目录前言一、多态二、C++的多态如何实现多态好处前言一、多态多态是C++面向对象三大特性之一。简而言之,父类指针指向子类的对象,也就是同一操作作用于不同的对象,可以产生不同的效果。多态分为两类:静态多态:函数重载和运算符重载。动态多态:派生类和虚函数实现运行时多态。两者的区别:静态多态的函数地址早绑定(静态绑定)-----编译阶段确定函数地址。比如普通成员函数跟着类走,指针是什么类型,就调用该类的成员函数。动态多态的函数地址晚绑定(动态绑定)-----运行阶段确定函数地址。原创 2021-04-17 19:29:33 · 466 阅读 · 6 评论 -
析构函数为什么写成虚函数?
由于类的多态性,基类指针可以指向派生类的对象。如果删除该基类的指针,就会调用该指针指向的派生类的析构函数,而派生类的析构函数又会自动调用基类的析构函数,这样整个派生类的对象被完全释放。·如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全,造成内存泄漏。(简而言之,如果一个类将来打算作为基类,就把析构函数写成虚析构函数。)...原创 2021-04-16 21:56:06 · 698 阅读 · 0 评论 -
new / delete与malloc / free的异同及实现原理
文章目录前言一、new和delete是如何实现的?二、new/delete和malloc/free的区别三、delete p、delete [] p、allocator都有什么作用?四、delete和delete[]区别?五、malloc申请的存储空间能用delete释放吗六、malloc与free的实现原理?malloc函数calloc函数realloc函数总结前言早餐店的老板问我要点什么,我说我要肆意妄为,志得意满,要梨花带雨和人见人爱,开个玩笑,我已经长大了,我要两根油条和一份豆浆。一、ne原创 2021-04-15 21:11:29 · 565 阅读 · 0 评论 -
立个flag,一个月之内把知识点整理完,放到博客
原创 2021-04-06 16:06:47 · 81 阅读 · 0 评论