C++
wxdcxp
C/C++,linux嵌入式
展开
-
C++名字空间
C++提供名字空间是用来防止命名冲突的,如果两个库都定义了一个相同的变量,当一个应用程序需要使用这两库时,将导致命名冲突。大型的应用系统都是由许多人来完成的。命名冲突是一种潜在的危险。C++用Namespace 来防止命名冲突。下面举一个例子:#include using namespace std;namespace mfg{ int flag;}names原创 2010-01-27 14:34:00 · 499 阅读 · 0 评论 -
C++函数重载
如果能够通过参数个数或类型来识别,C++允许在同一范围内使用相同名字的函数。例如多个名为a的函数被定义,我们就称函数a被重载。编译器通过将实参类型与同名函数的参数表进行匹配,以决定应该调用哪个函数。 #include using namespace std;int a(int i);int a(float i);int main(void){原创 2010-01-27 15:32:00 · 483 阅读 · 0 评论 -
vector与deque区别
vector和deque的区别主要在于他们底层的实现不同,特别是在插入和删除操作的实现机制不同。对于vector来说,不管其大小是多少,在头部插入的效率总是比在尾部插入的效率低。在尾部插入将耗费固定的时间。在头部进行插入时,耗费的时间与vector的大小成正比,vector越大,耗费的时间越多。例如,在一个大小为1000的vector头部插入一个元素,与在一个大小为10的vector头原创 2010-02-02 09:18:00 · 2315 阅读 · 0 评论 -
数组初始化
在函数体外定义的内置数组,其元素均初始化为0,在函数体内定义的内置数组,其元素无初始化。#include #define SIZE 10int a[SIZE];using namespace std;int main(){ int b[SIZE]; for (int i = 0; i < SIZE; i++) { cout原创 2010-02-01 10:59:00 · 548 阅读 · 0 评论 -
构造函数初始化列表
#include using namespace std;class c{public: c(){a = 0,x = 1;} //编译时会出错,因为a是const型变量private: const int a; int x;};int main(void){ c t; return 0;} 类C的构造原创 2010-02-02 11:47:00 · 834 阅读 · 0 评论 -
vector 与 set区别
首先,vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。也就是说set能够保证它里面所有的元素都是不重复的。另外对set容器进行插入时可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。还有一点是set对一些操作符没有进行重载,如下面是举个例子: #include #in原创 2010-02-02 10:14:00 · 20004 阅读 · 3 评论 -
派生类构造函数规则
如果基类有构造函数,但没有默认构造函数,那么派生类的构造函数必须显示地调用基类的某个构造函数:#include using namespace std;class BC{public:// BC(){cout << "BC" << endl;} BC(int a){cout << "BC int" << endl;} ~BC(){cout << "原创 2010-02-03 16:44:00 · 1397 阅读 · 0 评论 -
虚基类
多继承的结构有时候可能会非常复杂,例如一个派生类从同一个间接基类继承了多次#include using namespace std;class BC{public: BC(){cout << "BC" << endl;} float x;};class BC1:public BC{public: BC1(){cout << "BC原创 2010-02-04 10:19:00 · 553 阅读 · 0 评论 -
c++ 多态
多态是一种运行期的绑定。c++多态有以下三个前提条件:1.必须存在一个继承体系结构。2.继承体系结构中的一些类必须具有同名的virtual成员函数3.至少有一个基类类型的指针或基类类型的引用。这个指针或引用可用来对virtual成员函数进行调用。#include using namespace std;class BC{public: virtual vo原创 2010-02-05 19:45:00 · 534 阅读 · 0 评论