摘要:
class Screen{public:void home(){_cursor = 0;}private:int _cursor;}虽然每个类对象都有自己的类数据成员拷贝。但是每个类成员函数的拷贝“只有一份”!例如:Screen myScreen, groupScreen;myScreen.home();groupScreen.home();其中myScreen, groupScreen调用home()时,调用的是同一个函数home()!---------------------------------------------------------------------------对于“成 阅读全文
摘要:
定义类如下:class Foo{public:static int getNum();private:static int num;}1、定义一个指针指向 类的数据成员 numint Foo::*p = &Foo::num2、定义一个指针指向 类的成员函数 getNum()int (Foo::*pf)() = &Foo::getNum;/*int (Foo::*pf)() = &Foo::getNum;Foo *bufFoo;当通过指针访问类的成员函数getNum()时,应该这样写:(bufFoo->*pf)()*/ 阅读全文
摘要:
1、静态数据成员的类型可以是其所属类,而非静态数据成员只能被声明为该类的对象的指针。例如:class Bar{private:static Bar mem;//正确Bar mem1;//错误Bar *mem2;//正确}2、静态数据成员可以被作为类成员函数的缺省实参,而非静态成员不能。例如:class Foo{private:static int stcvar;public:int mem( int = stcvar);}3、静态成员函数的使用:如果一个类的成员函数只访问静态变量,则应该将此函数声明为静态函数</pre> 阅读全文
摘要:
c++支持多态性的几种方式:1、通过一个隐式转化,从“派生类指针或引用”转化到“其公有基类类型的指针或引用”Query *pquery = new NameQuery( "Glass" );2、通过虚拟函数机制3、通过dynamic_cast 和 typeid 操作符(RTTI)1)首先这两个操作符是在“运行时刻类型识别”!2)当一个类库是由第三方库提供商提供时,此时我们不能增加虚拟成员函数。但我们可能仍然希望扩展这个类库(以便增加类库的功能),这种情况下,就必须使用dynamic_cast。使用dynamic_cast时注意:如果转化的类型为派生类指针,这样使用:void 阅读全文
摘要:
class Diff{ public : void numble( int doftness );}class Shy : public Diff{ public: void numble( string str); using Diff::numble;}要想使基类和派生类中的这两个函数形成重载:需要在派生类中加一句话using Diff::numble; 这样就形成了重载。 阅读全文