C++
王晓斌
十年苦烦剧,一念愈倾仰
展开
-
【C++基础】类的static成员
static成员变量static成员变量的继承基类及其派生类共享该基类的静态成员变量内存:using namespace std;class Base{public: Base() { } static int m;};int Base::m = 1;class Child : public Base{public: Child() { }}原创 2013-12-30 23:36:57 · 645 阅读 · 0 评论 -
【C++基础】Contents & Index
Contents原创 2013-12-20 04:09:33 · 1935 阅读 · 0 评论 -
【C++基础】公有,私有和受保护的继承
对类所继承的成员的访问由基类中的成员访问级别和派生类派生列表中使用的访问标号共同控制。派生类可以进一步限制但不能放松对所继承的成员的访问。public inheritance:基类成员保持自己的访问级别:基类的public成员为派生类的public成员,基类的protected成员为派生类的protected成员。protected inheritance:基类的p原创 2014-02-07 00:33:51 · 1349 阅读 · 1 评论 -
【C++基础】inline函数
1. 为什么使用inline在大多数机器上,调用函数都要做很多工作:调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行.使用内联函数可以避免函数调用的开销.内联说明对于编译器来说只是一个建议,编译器可以选择忽略这个建议.2.内联函数定义内联函数的定义对编译器而言必须是可见的,以便编译器能够在调用点内联展开该函数的代码.此时,仅有原创 2014-02-05 16:42:01 · 881 阅读 · 0 评论 -
【C++基础】重载overload、重写(覆盖)override、隐藏hide的区别
重载overload重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。相同的范围(在同一个类中)函数名字相同参数不同virtual可有可无编译期绑定,与多态无关重写(覆盖)override重写/覆盖是在在派生类中重新对基类中的虚函数重新实现;即函数名和参数都一样,只是函数的实现体不一样。不同的原创 2014-01-12 14:37:06 · 1742 阅读 · 0 评论 -
【C++基础】const成员函数
将关键字const加在形参表之后就可以将成员函数声明为常量。const成员函数不能改变其所操作的对象的数据成员。const关键字必须同时出现在声明和定义中,若只出现在其中一处,就会出现一个编译时错误。const成员函数实际上是改变了隐藏的this形参的类型;隐含的this形参将是一个const T*类型的指针。由于this指向const对象,const成员函数不能修改调用该原创 2014-02-05 15:51:10 · 743 阅读 · 0 评论 -
【C++基础】virtual析构函数
若基类用于多态:当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,其结构为定义,实际执行时通常发生的是对象的derived成分没被销毁.这通常会造成一个"局部销毁"对象,形成资源泄漏.消除这个问题的做法很简单:给base class一个virtual析构函数.此后删除derived class对象就会销原创 2013-12-24 00:09:18 · 810 阅读 · 0 评论 -
【C++基础】赋值运算符重载
给出如下CMyString声明,添加赋值运算符函数:class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData;};定义一个赋值运算符函数时,原创 2013-12-23 14:19:58 · 652 阅读 · 0 评论 -
【C++基础】拷贝构造函数的参数必须是引用类型
C++标准不允许拷贝(复制)构造函数传值参数,而必须是传引用或者是常量引用;传值参数在Visual Studio/GCC中都会编译出错。编译下面的代码:#include using namespace std;class Test{public: Test() { cout<<"Default Constructor"<<endl; } Test(原创 2013-12-23 11:22:04 · 944 阅读 · 0 评论 -
【C++基础】纯虚函数 - pure virtual function
1. 定义在函数形参表后面写上 = 0 以指定纯虚函数.virtual void function() = 0;在派生类中必须实现(重写)该函数(不要后面的=0, 否则该派生来也不能实例化).纯虚函数通常没有定义(函数体),但实际上我们是可以定义(实现)纯虚函数的:class Base { public: virtual void function() = 0原创 2014-02-10 00:59:39 · 5016 阅读 · 0 评论