```cpp #include #include static void interfaceOfSharedPtr(); int main(void) { interfaceOfSharedPtr(); return 0; } class Object { public: Object(int id... ...
分类:
编程语言 时间:
2020-02-24 21:06:37
阅读次数:
78
```cpp #include #include #include /* //this //调用了两次析构函数, ParentPtr p(this); //智能指针出了作用域后就delete this ,析构了 //所以错了,为了解决这个问题,就需要自身的类继承于 std::enable_share... ...
分类:
编程语言 时间:
2020-02-24 21:03:10
阅读次数:
121
当定义一个类时,我们显式地或隐式地指定了此类型的对象在拷贝、赋值和销毁时做什么。一个类通过定义三种特殊的成员函数来控制这些操作,分别是 拷贝构造函数 、 拷贝赋值运算符 和 析构函数 。 拷贝构造函数定义了当用同类型的另一个对象初始化新对象时做什么,拷贝赋值运算符定义了将一个对象赋予同类型的另一个对 ...
分类:
编程语言 时间:
2020-02-24 13:23:18
阅读次数:
86
众所周知,C++的类如果没有默认构造函数,会自动生成一个。 同理,如果没有复制构造函数即A::A(const A&){}这个函数 ,则系统也会自动生成一个,但这个自动生成的复制构造函数不一定满足我们的要求。析构函数也会自动生成(如果没定义的话)。 比如下面的例子: 1 class A{ 2 publ ...
分类:
移动开发 时间:
2020-02-24 00:27:47
阅读次数:
121
基类和派生类的构造函数 类的构造函数不能被继承,为什么? 因为即使被继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数。 大部分基类中都有private属性的成员变量,它们在派生类中无法访问,更不能使用派生类的构造函数来初始化。怎么办? 在派生类的构造函数中调用基类的构造函数。 派生类 ...
分类:
编程语言 时间:
2020-02-23 16:42:49
阅读次数:
89
析构函数 析构函数:是一种特殊的成员函数,没有返回值,不需要程序员显式调用,而是在销毁对象是自动执行。 注意:析构函数没有参数,不能被重载,一个类只有一个析构函数,如果没有定义,编译器会自动生成一个默认的析构函数。 注意:用new分配内存时会调用构造函数,用delete释放内存时会调用析构函数。 析 ...
分类:
编程语言 时间:
2020-02-22 22:25:41
阅读次数:
103
1. class CParent { public: virtual void Intro() { printf( "I'm a Parent, " ); Hobby(); } virtual void Hobby() { printf( "I like football!" ); } }; cla ...
分类:
编程语言 时间:
2020-02-16 11:28:05
阅读次数:
64
结构 压缩软件的核心在于压缩算法。基于Huffman编码的压缩算法思路: 1. 以 二进制方式 读取源文件,按照每8bits作为一个字符; 2. 统计每个字符的出现频率即为叶子结点的权值,按照Huffman算法得到每个叶子的编码; 3. 对源文件的每个字符,将新的编码组合为二进制流,按照每8bits ...
分类:
其他好文 时间:
2020-02-13 17:37:41
阅读次数:
72
构造和初始化__init__(self, args)构造函数__new__(cls)传入的是类实例__del__(self)析构函数,调用 del cls 时会被调用属性访问控制__getattr__(self, name)如果属性已经定义了那么不会再执行__getattr__()了,而是直接通过访... ...
分类:
编程语言 时间:
2020-02-08 11:30:40
阅读次数:
96
编译器自带拷贝构造(ctor)和拷贝赋值函数(operator =), 但是对于成员变量含有指针的类,其不能使用默认的拷贝赋值函数。因为使用默认的,会直接将指针指向的地址进行赋值 (浅拷贝,共享内存,共指一个对象),而不是分配一块内存,具有相同的数值 (深拷贝,独立,两个对象)。 浅拷贝容易造成da ...
分类:
其他好文 时间:
2020-02-07 01:09:04
阅读次数:
93