C++
Colin_666
这个作者很懒,什么都没留下…
展开
-
C++提供的原子操作
C++原子变量的操作template<class T>struct atomic; std::atomic<int> foo(10);// foo是一个整形原子变量,C++内部已经通过锁实现了原子操作,无需再加锁STL提供的实例化类型原子变量的方法引用整型变量的原子操作...原创 2021-06-15 10:18:46 · 232 阅读 · 0 评论 -
函数重载的一些问题
面试问题:void fun(int, double){ cout << "int,double" << endl;}void fun(double, int){ cout << "double,int" << endl;}现在调用fun(int , int)会怎么样?函数重载的匹配过程有三步:1、确定候选函数,两个原则:1)函数名相同 2)在调用点函数可见。显然对于该题目来说两个函数都是候选函数。2、确定可行函数,也是有原创 2020-08-13 23:11:04 · 333 阅读 · 0 评论 -
拷贝构造函数、拷贝赋值运算符的总结
一、什么时候需要自定义拷贝构造函数一般编译器会自定义缺省的拷贝构造函数,但是当类中含有指针成员时,常常需要我们自己定义拷贝构造函数。基本原则:1、当我们需要自定义析构函数时,通常也需要自定义拷贝构造函数。2、需要拷贝构造函数时通常也需要自定义拷贝赋值运算符,反之亦然。二、 深拷贝有两种拷贝方式,深拷贝和浅拷贝。当我们自定义的类中有指针类型的数据成员时,深拷贝会更加安全。所谓深拷贝就是开辟一块新的内存空间,将另一个对象的成员逐一拷贝到新的内存空间。下面考虑自己实现一个string类,主要是自己实原创 2020-08-04 15:59:16 · 513 阅读 · 0 评论 -
C++多态为什么只有指针或引用能实现
只有指针和引用可以实现动态绑定,所谓的动态绑定就是指静态类型和动态类型不同。class Base{public: virtual void fun() {cout<<"Base"<<endl;}};class D:public Base{public: void fun(){cout<<"D"<<endl;}};D d;Base* base1 = &d;Base base2 = d;**静态类型:**即声明的类型,*b原创 2020-07-29 18:35:59 · 781 阅读 · 1 评论 -
#define、const区别
首先,#define 是在预处理过程中起作用,const在编译运行时起作用;#define AGE 18 对于这个预处理指令,在预处理阶段,也许所有的 AGE 都被替换为18 ,就是说编译过程中可能根本就看不到AGE这个名称。当使用AGE的语句出现编译错误时,可能会带来困扰,因为所有的错误都直接关联到18这个常量,调试时在追踪这个常量上浪费时间;#define只进行字符串替换,const还会进行类型检查,可以避免低级错误,比如使用错误的类型;从内存占用上看,#define有多少地方用就替换多少次,而.转载 2020-07-29 16:26:30 · 112 阅读 · 0 评论