
C++
文章平均质量分 72
wenmin_shu
好的资源,大家一起分享
展开
-
深拷贝、浅拷贝
1.深拷贝:全部复制2.浅拷贝:指针指过去调用一次构造函数,调用两次析构函数,两个对象的指针成员所指内存相同,指针被分配一次内存,但是程序结束时该内存却被释放了两次,会造成内存泄漏问题!由于编译系统在我们没有自己定义拷贝构造函数时,会在拷贝对象时调用默认拷贝构造函数,进行的是浅拷贝!即对指针拷贝后会出现两个指针指向同一个内存空间。PS:默认构造函数是浅拷贝,直接指针指过去。所以,在...原创 2018-09-30 23:17:27 · 116 阅读 · 0 评论 -
explicit
explicit:声明为explicit的构造函数不能在隐式转换中使用。也就是不能直接用“=”掉用构造函数explicit构造函数是用来防止隐式转换的。例如:class Test1{public: Test1(int n) { num=n; }//普通构造函数private: int num;};class Test2{p...转载 2018-09-30 23:13:44 · 334 阅读 · 0 评论 -
不可继承的类
不可继承的类1. 将基类的构造函数设置成private,然后protected继承,这样子类就不能访问父类的构造函数,但这样的类不能像正常类那样去实例化对象。类似于单例模式,定义一个静态函数或者友元函数来生成类的实例,这样只能通过new在堆上创建类。class Base{private: Base() {} ~Base() {} friend cla...转载 2018-09-30 23:06:39 · 690 阅读 · 0 评论 -
虚函数、纯虚函数、普通函数、虚析构函数
虚函数:实现运行时多态,父类中提供虚函数的实现,为子类提供默认的函数实现。子类可以重写父类的虚函数实现子类的特殊化。 当将基类中的某一成员函数申明为虚函数后,子类中的同名函数自动成为虚函数。 定义一个函数为虚函数,不是说这个函数在基类中不被实现,只是为了运行时多态,运用基类的指针来调用子类中的相应函数 虚函数,它虚就虚在所谓"推迟联编"或者"动态联编"上,一个类函数的调用并不是在编译时刻...原创 2018-09-30 23:05:11 · 459 阅读 · 0 评论 -
static, const, static const 与 const static
1. static const/ const static, 意义一样namespace NdpiTransformersTest{class TestMain{public: ~TestMain();static int run(int argc, const char** argv);private:static ConfigMgmtDataTypes::Co...原创 2018-09-30 23:03:24 · 11933 阅读 · 0 评论 -
C++源文件编译器过程
C++源文件编译会有以下四个部分:编译预处理 => 编译、优化阶段(编译原理便用于这个阶段)=> 编译过程,编译成目标文件.o文件 => 链接成binary文件1. 编译预处理:宏定义指令:如#define Name TokenString,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换 条件编译指令:如#ifde...原创 2018-09-30 22:49:29 · 680 阅读 · 1 评论 -
void* memcpy(void* src, void* dest, size_t len)
关键重点考虑:防止dest 地址和 src 地址 重合按字节(Byte)拷贝实现的memcpyvoid *my_memcpy_byte(void *dst, const void *src, int n){if (dst == NULL || src == NULL || n <= 0)return NULL;char * pdst = (char *)dst;...转载 2018-09-30 22:43:06 · 1244 阅读 · 0 评论 -
对象复制和赋值
对象的赋值:1.对象的赋值只对其中的数据成员赋值,而不能对成员函数赋值。赋值的过程是将一个对象的数据成员在存储空间的状态复制给另一个对象的数据成员的存 储空间。box2=box1;(前边没有类名) 2.类的数据成员中不可包括动态分配的数据,否则在赋值时可能出现严重的后果。对象的复制:有时会需要用到多个完全相同的对象,所以需要复制。有时需要将对象在某一瞬间时的状态保留下来。这就是更需要复...转载 2018-09-30 23:21:50 · 929 阅读 · 0 评论