摘要: 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 = "0";//错误 floa 阅读全文
posted @ 2011-10-25 13:57 韩冬冬 阅读(180) 评论(0) 推荐(0) 编辑
摘要: Animal为基类,Bird为派生类Bird继承Animal当继承方式为public时父类的public成员在子类也是public父类的protected成员在子类也是protected父类的private成员只属于父类当继承方式为protected时父类的public成员在子类是protected成员父类的protected成员在子类也是protected父类的private成员只属于父类当继承方式为private时父类的public成员在子类是private成员父类的protected成员在子类是private成员父类的private成员只属于父类 阅读全文
posted @ 2011-10-25 13:56 韩冬冬 阅读(176) 评论(0) 推荐(0) 编辑
摘要: class Screen{public:void home(){_cursor = 0;}private:int _cursor;}虽然每个类对象都有自己的类数据成员拷贝。但是每个类成员函数的拷贝“只有一份”!例如:Screen myScreen, groupScreen;myScreen.home();groupScreen.home();其中myScreen, groupScreen调用home()时,调用的是同一个函数home()!---------------------------------------------------------------------------对于“成 阅读全文
posted @ 2011-10-25 13:55 韩冬冬 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 定义类如下: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)()*/ 阅读全文
posted @ 2011-10-25 13:53 韩冬冬 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 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>&nbsp; 阅读全文
posted @ 2011-10-25 13:53 韩冬冬 阅读(180) 评论(0) 推荐(0) 编辑
摘要: c++支持多态性的几种方式:1、通过一个隐式转化,从“派生类指针或引用”转化到“其公有基类类型的指针或引用”Query *pquery = new NameQuery( "Glass" );2、通过虚拟函数机制3、通过dynamic_cast 和 typeid 操作符(RTTI)1)首先这两个操作符是在“运行时刻类型识别”!2)当一个类库是由第三方库提供商提供时,此时我们不能增加虚拟成员函数。但我们可能仍然希望扩展这个类库(以便增加类库的功能),这种情况下,就必须使用dynamic_cast。使用dynamic_cast时注意:如果转化的类型为派生类指针,这样使用:void 阅读全文
posted @ 2011-10-25 13:52 韩冬冬 阅读(248) 评论(0) 推荐(0) 编辑
摘要: class Diff{ public : void numble( int doftness );}class Shy : public Diff{ public: void numble( string str); using Diff::numble;}要想使基类和派生类中的这两个函数形成重载:需要在派生类中加一句话using Diff::numble; 这样就形成了重载。 阅读全文
posted @ 2011-10-25 13:51 韩冬冬 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 以下类的定义只是为了说明虚拟机制而设计: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->getAge();编译错误:Animal类中不存在getAge... 阅读全文
posted @ 2011-10-25 13:50 韩冬冬 阅读(357) 评论(0) 推荐(0) 编辑
摘要: #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()----- ival: "<< 阅读全文
posted @ 2011-10-25 13:48 韩冬冬 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 基类定义如下: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();//获取抽象基类的“拷贝” 阅读全文
posted @ 2011-10-25 13:47 韩冬冬 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 有一个基类: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 和 lvclass luozi: public m... 阅读全文
posted @ 2011-10-25 13:46 韩冬冬 阅读(240) 评论(0) 推荐(0) 编辑
摘要: /****Lession1.h****/extern bool a;extern int b;extern float c;extern double d;extern unsigned int e;extern long f;extern unsigned long g;extern char h;extern long double i; /****Lession1.cpp****/#include "stdafx.h"#include "Lession1.h"bool a;int b;float c;double d;unsigned int e; 阅读全文
posted @ 2011-10-25 13:44 韩冬冬 阅读(281) 评论(0) 推荐(0) 编辑
摘要: #include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ /****const 指针****/ const double pi = 3.14; //double *p = &pi;//错误,const对象的地址只能传给 指向const对象 的指针 const double *p = 0; p = &pi; //*p += 1.4;//错误,不能通过 指向const对象的指针 修改 const对象 的值 double 阅读全文
posted @ 2011-10-25 13:44 韩冬冬 阅读(243) 评论(0) 推荐(0) 编辑
摘要: #include "stdafx.h"#include <iostream>#include <vector>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ /****数组用法****/ int iar[6] = {-12,-2,0,8,5,4}; vector<int> ivec(10,3); vector<int> ivec1(iar+1,iar+4); vector<int> ivec2(ivec1); vector<int>:: 阅读全文
posted @ 2011-10-25 13:43 韩冬冬 阅读(522) 评论(0) 推荐(0) 编辑
摘要: #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 = bitvec.test(3);//测试第4位是 阅读全文
posted @ 2011-10-25 13:42 韩冬冬 阅读(471) 评论(0) 推荐(1) 编辑
摘要: char cal1[] = {'C','+','+'};//维数是3 char cal2[] = "c++";//维数是4 //char cal3[] = cal1;//不能用一个数组初始化另一个数组 //char &cal4[] = {'C','+','+'};//c++不允许数组引用----------------------------------------------------------string *ps = new string("Hello 阅读全文
posted @ 2011-10-25 13:35 韩冬冬 阅读(195) 评论(0) 推荐(0) 编辑
摘要: dynamic_cast:通常在父类与子类之间转化时使用,转化的类型和对象都是类对象,不能应用于c++内置类型static_cast:一般的类型转换,但不能将一个const对象转型为non-const对象(只有const_cast能做到)。const_cast:将一个const对象转型为non-const对象;reinterpret_cast:通常对于操作数的位模式执行一个比较低层次的重新解释。 阅读全文
posted @ 2011-10-25 13:29 韩冬冬 阅读(162) 评论(0) 推荐(0) 编辑
摘要: #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 &eobj)//声明为引用 { ... 阅读全文
posted @ 2011-10-25 13:27 韩冬冬 阅读(195) 评论(0) 推荐(0) 编辑