`
韩冬冬
  • 浏览: 14245 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
有一个基类: class Animal { public: Animal(); void setWeight(float weight); float getWeight(); private: float weight; } 有两个Animal类的派生类: class ma:public Animal { public: ma(); void run(); } class lv:public Animal { public: lv(); void roar(); } 定义一个派生类 luozi 继承 ma 和 lv class ...
基类定义如下: class Query{ public: virtual Query *clone() = 0; }; 派生类定义如下: class NameQuery : public Query { public: virtual Query *clone() { return new NameQuery(*this); } }; Query *pq = new NameQuery(); Query *pq1 = pq->clone();//获取抽象基类的“拷贝”  
#include <iostream> class Base{ public: virtual int foo( int ival = 1024 ) { cout<<"Base::foo()----- ival: "<<ival<<endl; return ival; } }; class Derived : public Base { public: virtual int foo( int ival = 2048) { cout<<"Derived::foo()--- ...
以下类的定义只是为了说明虚拟机制而设计: class Animal{ public: int getNum(); } class Bird : public Animal { public: int getNum(); } Animal *pa = new Bird(); 1、pa->getNum();此时调用的是Animal类的getNum() 修改Bird类为: class Bird : public Animal { public: int getNum(); virtual int getAge(); } 2、pa-> ...
class Diff{ public : void numble( int doftness ); } class Shy : public Diff { public: void numble( string str); using Diff::numble; } 要想使基类和派生类中的这两个函数形成重载:需要在派生类中加一句话 using Diff::numble; 这样就形成了重载。  

c++ 多态性

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

类总结 集锦

class Screen{ public: void home(){_cursor = 0;} private: int _cursor; } 虽然每个类对象都有自己的类数据成员拷贝。但是每个类成员函数的拷贝“只有一份”! 例如: Screen myScreen, groupScreen; myScreen.home(); groupScreen.home(); 其中myScreen, groupScreen调用home()时,调用的是同一个函数home()!   对于“成员函数”而言,const类对象只能调用const成员函数,(一般const成员函数不能修改类对 ...
Animal为基类,Bird为派生类 Bird继承Animal 当继承方式为public时 父类的public成员在子类也是public 父类的protected成员在子类也是protected 父类的private成员只属于父类 当继承方式为protected时 父类的public成员在子类是protected成员 父类的protected成员在子类也是protected 父类的private成员只属于父类 当继承方式为private时 父类的public成员在子类是private成员 父类的protected成员在子类是private成员 父类的priv ...
class First{ public: int num = 0;//错误 const int num1 = 0;//错误 static int num2 = 0;//错误 static const int num3 = 0;//正确,只有静态常量整型数据成员才可以在类中初始化 string str = "0";//错误 const string str1 = "0";//错误 static string str2 = "0";//错误 static const string str3 = " ...
#include "stdafx.h" #include <iostream> using namespace std; enum EHstate{ noErr, zeroOP,nega, severeError}; enum EHstate state = noErr; int mathFunc(int i) { if(i == 0) { throw state; } } void calculate(int op) { try { mathFunc(op); } catch(EHstate & ...
dynamic_cast:通常在父类与子类之间转化时使用,转化的类型和对象都是类对象,不能应用于c++内置类型static_cast:一般的类型转换,但不能将一个const对象转型为non-const对象(只有const_cast能做到)。const_cast:将一个const对象转型为non-const对象;reinterpret_cast:通常对于操作数的位模式执行一个比较低层次的重新解释。
  char cal1[] = {'C','+','+'};//维数是3 char cal2[] = "c++";//维数是4 //char cal3[] = cal1;//不能用一个数组初始化另一个数组 //char &cal4[] = {'C','+','+'};//c++不允许数组引用   string *ps = new string("Hello World!"); delete ps;//此时ps为空悬指针,需将ps = 0; ps = 0;//至此彻底收回 动态内存   int ival = 1024; ...
#include "stdafx.h" #include <iostream> #include <bitset> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { bitset<32> bitvec(8); bool flag = bitvec.any();//判断是否存在某位或者多位为1,有则返回true bool flag1 = bitvec.none();//判断是否所有的位都是0,是则返回true bool flag2 = b ...
Global site tag (gtag.js) - Google Analytics