
C++
marine0401
这个作者很懒,什么都没留下…
展开
-
const的用法
const是一个关键字,加在变量前,将其声明为常量,简单来说,就是不希望该变量的值发生改变。因此,它必须在声明该变量时就赋初值。const与指针如果const加在*符号前面,如:const int *p = &a;或 int const *p = &a;则称p为常量指针,其本质都是const修饰 p,因此不可使用p改变a中的值,但是p可以指向其他地址。如果const加在符...原创 2018-10-19 09:17:14 · 364 阅读 · 1 评论 -
多重继承
多重继承(MI)指的是 有多个直接基类的类。 公有MI表示的也是is-a的关系。必须用关键字public来限定每一个基类,否则,编译器将认为是私有派生。转载 2018-12-16 10:50:52 · 233 阅读 · 0 评论 -
快速排序
快速排序是利用递归来实现的一种排序算法,每执行一次确定一个基准值并返回。需要传入 指向数组第一个元素 和 最后一个元素的指针作为参数。分别设为low 和 high。下面我们模拟一下计算机如何执行:(默认升序)以50, 36, 66, 76, 36, 12, 25, 95 为例当进入函数时选取第一个值为基准值(也就是50)先和high指向的元素比较(95)50 <= 95...原创 2018-11-25 18:19:13 · 131 阅读 · 0 评论 -
类模板与特化
设计一个类,它的数据成员的类型可能根据需求变化而变化,笨方法是每一个类型都单独写一个类出来,但是这些类除了改动一些类型,其它基本一样,重复的写是很繁琐的事情,而且有时你需要的类型是你新增的,难道要再写一遍吗?C++提供了模板语法,下面简单举个例子:template <class T>// class 也可以写成typenameclass complex{ private:...原创 2018-11-08 16:52:27 · 413 阅读 · 0 评论 -
构造函数和析构函数
C++类具有封装的特性,即外界不能直接访问类中成员,那类中的数据成员如何初始化呢。其实在类中有一种特殊的函数叫构造函数,它没有返回值,并且函数名与类名一致,在声明一个对象的时候调用构造函数。class person{private:int a;char *b;person(int x,char *y) : a(x), b(y){}}构造函数可以像上面这样写,:后面叫做初始化列表,一...原创 2018-11-05 20:49:05 · 154 阅读 · 0 评论 -
引用的用法
引用是C++新增的语法,和指针类似,但又有区别。引用有代表的意思,而指针是一个变量的地址值。int a = 3;int &x = a; //这样做相当于给a取了一个别名,操作x就是操作a;注意:引用必须在声明时就进行初始化。且不能将表达式赋给引用变量。int b = 1;x = b;还有x一旦声明完就只能代表那一个变量,因此上面这句并不是说让x代表b,而是将b中的值赋给...原创 2018-11-05 19:51:37 · 1042 阅读 · 0 评论 -
STL之List
STL中的List是一个双向链表。链表是一种物理储存上不连续,逻辑上连续的数据结构。逻辑上的连续有指针来实现。现在不讲如何实现,来看看STL中List如何使用。template &lt; class T, class Alloc = allocator&lt;T&gt; &gt; class list;//list模板,第二个参数为缺省参数,是分配器,一般不需要写,第一个参数是指定Lis...翻译 2018-12-16 15:03:43 · 145 阅读 · 0 评论 -
如何在类中定义static成员
在类中直接写class Person{ private: static int a = 9;};这样写是会报错,C++不允许在类内初始化非常量静态成员。那你可能会这么想static不是会自己初始化不赋值不就行了。class Person{ private: static int a; public: int getInt(){return a;}};这样写...原创 2018-11-07 15:29:31 · 1356 阅读 · 0 评论 -
浅拷贝和深拷贝
知道了拷贝构造函数的基本用法之后,还需明白不同的类,所需的拷贝构造函数写法不同。根据类中是否有带指针的数据成员,来判断写哪种拷贝构造函数。1.不带指针—浅拷贝。#include <iostream>using namespace std;class complexs{ private: double Real; double Image; public: c...原创 2018-11-07 11:28:29 · 101 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数顾名思义就是具有拷贝功能的构造函数。例:class Person{ private: public: Person(const Person& p);}参数为自身类的引用的构造函数为拷贝构造函数。那么它何时调用呢?它本质还是一个构造函数,所以是在声明一个对象的时候调用。Person a; Person b = a;//和Person b(a...原创 2018-11-07 10:05:13 · 103 阅读 · 0 评论 -
STL之find与二分查找
要使用find()函数需包含algorithm头文件。template <class InputIterator, class T>InputIterator find (InputIterator first, InputIterator last, const T& val);以上是find函数的声明。所以如果你传入vector::iterator 类型的迭代器 它...翻译 2018-11-01 19:50:39 · 1142 阅读 · 0 评论 -
STL容器之array
Array是C++11新增的一个模板类。Array是一个固定大小且连续储存的线性数组。因此它不能像其他容器那样可以通过allocator来改变自身储存容量。Template parameters(模板参数):T:数据类型N:指定Array储存元素的数值。Member functionsbegin() 返回一个指向第一个元素的迭代器。end() 返回一个...原创 2018-10-31 20:28:06 · 179 阅读 · 0 评论 -
构造函数放在Private
众所周知,外部只能调用class中的Public函数,于是给人一种错觉,构造函数只能放在Public中。其实不然,如果你想设计一个只能生成一个对象的类,并且,该对象只在需要时声明。那么你就需要把构造函数放入Private中,问题是如何得到这个类的对象呢?可以有如下操作:class Person{private:Person();public:Person& getOneP...原创 2018-10-31 19:57:31 · 2920 阅读 · 0 评论 -
虚函数的实现机制
假设有两个类如下:class animal{void sport();}class tigger:public animal{void sport();}我们都知道不同的动物运动方式都不会完全一样,因此 tigger继承于animal时应该要重新写一个sport,但问题是如果像上面那样写就会出现一个问题。tigger中其实有两个sport方法,分别是animal::sport(...原创 2018-10-25 22:04:23 · 1875 阅读 · 0 评论 -
new,delete和malloc,free的区别
malloc只分配memorynew 先分配memory 再调用ctor(构造函数)free,直接释放memory。delete 先调用析构函数,再释放memory原创 2018-12-16 11:05:35 · 121 阅读 · 0 评论