c++类成员的访问权限有三种,分别是 public, protected, private(默认)。其中private表示只允许在类内访问,使用这个特点,我们可以实现一些特殊作用的函数 私有构造函数 不能直接创建对象,单例模式往往使用这个方式 私有析构函数 析构函数被私有之后,就不能被自动析构,这样 ...
分类:
其他好文 时间:
2019-01-17 10:19:18
阅读次数:
186
一、函数重载--用相同的函数名定义一组功能相同或类似的函数,程序的可读性增强 1函数重载:在实际的开发中需要定义几个功能类似而参数类型不同的函数那么这样的几个函数可以使用相同的函数名,这就是函数的重载。简言之就是一个函数名可以有多种用途。 2.函数重载提高了程序的可读性,函数参数列表的不同包括:参数 ...
分类:
编程语言 时间:
2019-01-10 21:49:19
阅读次数:
203
1、如果一个类被继承,同时定义了基类以外的成员对象,且基类析构函数不是virtual修饰的, 那么当基类指针或引用指向派生类对象并析构(例如自动对象在函数作用域结束时;或者通过delete)时,会调用基类的析构函数而导致派生类定义的成员没有被析构,产生内存泄露等问题。虽然把析构函数定义成virtua ...
分类:
其他好文 时间:
2018-12-31 17:13:20
阅读次数:
210
1、构造函数 (1)每个类都要定义它自己的构造函数和析构函数,是类的成员函数。 特点:名称与类名相同;没有返回值;一定是共有函数,可以直接访问类内所有成员函数;可以带默认形参,可以重载; (2)注意: (1)类中没有定义任何构造函数时,才使用默认构造函数; (2)不能同时出现,无参构造函数和带有全部 ...
分类:
编程语言 时间:
2018-12-27 23:07:24
阅读次数:
199
1. C++11标准中让类的析构函数默认也是noexcept(true)的。 但如果显式地为析构函数指定了noexcept,或者类的基类或成员有noexcept(false)的析构函数,析构函数就不会再保持默认值。 2. 初始化成员变量: c++98中,支持在类声明中使用等号“=”进行初始化,但要求 ...
分类:
编程语言 时间:
2018-12-26 20:10:30
阅读次数:
263
如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象。 STL的容器虽然比较智能,但是没有智能到可以自动销毁new出来的指针对象。 所以在使用STL中的容器时,如果保存的是mew出 ...
分类:
其他好文 时间:
2018-12-24 03:02:48
阅读次数:
137
```c++ // / 任何时候都不要在构造函数或析构函数中调用虚函数 / class dog { public: string m_name; dog(string name) {m_name = name; bark();} virtual void bark() { cout ...
分类:
编程语言 时间:
2018-12-23 20:47:08
阅读次数:
203
```c++ // / 在C++ 03标准下 在没有显式定义的情况加,编译器会自动生成以下4个函数 1. 拷贝构造函数 2. 拷贝赋值运算符 3. 析构函数 4. 默认构造函数(只有当没有声明任何构造函数的时候) / class dog {}; / 这个看似空的类,其实等效于下面这个类 / clas ...
分类:
编程语言 时间:
2018-12-23 19:34:49
阅读次数:
251
一、假定数据是如何存储的 隐藏某些实现逻辑时,我们是想要隐藏绘制子弹的细节。我们是通过使用一个可以调用的函数,而不是直接写出绘制子弹到屏幕上的代码来实现的。这里同样可以使用一个函数来隐藏棋盘存储的细节。不直接访问数组,而是调用一个访问数组的函数。例如,你可以写一个像下面这个getPiece一样的函数 ...
分类:
编程语言 时间:
2018-12-22 23:20:28
阅读次数:
210