
C/C++
文章平均质量分 67
ll_0802
这个作者很懒,什么都没留下…
展开
-
关键字const
1.const与指针 const修饰指针一般有一下4种情况 int b = 500; const int* a = &b; //(1) int const *a = &b; //(2) int* const a = &b; //(3) const int * const a = &b; //(4) 情况1和2,const都在*的左边,const用来修饰指针所指的变量,即指针指向为常量,不能通过原创 2016-02-21 15:56:37 · 438 阅读 · 0 评论 -
多态之虚函数
虚函数实现运行时多态。 虚函数声明只出现在类定义函数原型声明中,而不能在成员函数实现的时候。 虚函数一般不声明为内联函数,因为虚函数访问时需要动态绑定,而内联函数是静态的。 virtual关键字可以省略,当基类中已经声明了虚函数,那么派生类中和基类同返回值,同名,同形参的函数即使没有加virtual也可判定为虚函数。 构造函数不可以是虚函数,西沟函数可以是虚函数。 为什么需要虚析构函数?原创 2016-02-26 19:24:09 · 419 阅读 · 0 评论 -
多态之override与final
多态行为的基础是:基类声明一个虚函数,派生类声明一个函数覆盖该函数。 覆盖的要求是函数签名一致。函数签名包括:函数名,参数列表,const 在派生类的函数中声明override,编译器会在编译的过程中检查基类中是否有函数签名一致的虚函数形成多态,否则报错。 在类或者函数中声明final可以避免类被继承,或者函数被覆盖。 示例代码: struct Base1 final {}; struc原创 2016-02-26 20:08:00 · 338 阅读 · 0 评论 -
纯虚函数和抽象类
抽象类是带有纯虚函数的类。 纯虚函数在基类中定义,它没有定义任何具体操作,声明格式为 virtual 返回类型 函数名(参数) = 0。 对于暂时无法实现的函数可以定义为纯虚函数,留给派生类实现。 抽象类只能是基类,抽象类不能定义对象。 示例代码: #include using namespace std; class Base1 { public: virtual voi原创 2016-02-26 19:46:10 · 342 阅读 · 0 评论 -
多态之运算符重载
1.双目运算符重载 双目运算符重载规则:若要实现表达式oprd1 B oprd2,运算符为B,则需要将B重载为oprd1所属类对象的成员函数,形参为oprd2所属类型 示例代码:复数的加减运算 #include using namespace std; class Complex { public: Complex(double r = 0.0, double i = 0.0)原创 2016-02-25 21:55:26 · 393 阅读 · 0 评论 -
访问从基类继承的成员
示例代码: #include using namespace std; class Base1 { public: int var; void fun() { cout << "member in Base1" << endl; } }; class Base2 { public: int var; void fun() { cout << "member i原创 2016-02-24 22:16:13 · 328 阅读 · 0 评论 -
派生类构造函数-多继承
示例代码: #include using namespace std; class Base1 { public: Base1(int i) { cout << "Base1's construct is called " << i << endl; } }; class Base2 { public: Base2(int j) { c原创 2016-02-24 21:52:07 · 1062 阅读 · 0 评论 -
结构体的数据对齐
以32位处理器为例,数据以4字节为对齐单位。 看如下示例代码 #include using namespace std; struct { short a1; short a2; short a3; }A; struct { long a1; short a2; }B; class C { private: bool bTemp; i原创 2016-02-21 22:02:33 · 461 阅读 · 0 评论 -
C/C++开源项目清单
1.https://github.com/programthink/opensource 2.http://www.ezlippi.com/blog/2014/12/c-open-project.html原创 2016-02-21 20:55:57 · 391 阅读 · 0 评论 -
函数模板和类模板
当重载的函数和原函数解决问题的逻辑是一样的,函数体语句也是一样的,不一样的只是处理的数据类型,为了避免代码冗余,可以使用函数模板。 函数模板的语法格式template 示例代码: #include using namespace std; template void outputArray (const T *arr, int n){ for (int i = 0; i < n;原创 2016-02-27 14:47:00 · 286 阅读 · 0 评论