C++基础及重要技术
第一种方法是将类的成员函数定义在类体内,这里不再介绍
第二种方法是将类体内的成员函数的实现放在类体外,此时需要域运算符“::”,和第一种效果一样。
class apple { public: //数据成员 int index; //成员函数 int getindex(); }; //类成员函数实现部分 int apple::getindex() { return index; }
C++语言一般在头文件放入函数的声明,在cpp文件里面放入函数的实现,同样可以在头文件里面放入类的定义,将类的成员函数实现在实现文件内,存放类的头文件和实现文件最好和类的名称相同。例如:
//apple.h文件 #include #include.... class apple { public: int index; int getindex(); } ...
//apple.cpp文件 #include ... int apple::getindex() { return index; } ...1.2构造函数
#include class apple { public: apple(); apple(int iindex,short isize); int index; short size; ... } //默认构造函数初始化 apple::apple() { index=1; size=2; } //在带参数的构造函数中初始化 apple::apple(int iindex,short isize) { index=iindex; size=iisize; } int apple::getindex() { return index; } ... void main() { apple a1; cout<1.3类成员如果在类定义的时候没有加任何关键字,默认状态成员都在private区域。
1.3.1静态类成员若将类成员定义为静态类成员,则允许使用类名直接访问,大概是因为叫这个名字的只有一个大家的值都一样吧,用类直接访问不用担心混淆,静态类成员是在类成员定义前使用static关键字标识。在定义静态数据成员时,通常需要在类体外对静态数据成员初始化。例如:
class apple { public: static unsigned int price; //定义一个静态数据成员 } unsigned int apple::price=10; //初始化静态数据成员 ... int main(...) { apple a1; cout<在定义类的数据成员时,可以为成员函数指定默认参数,其参数默认值可以是类的静态数据成员,但是普通数据成员则不能作为函数默认参数。 另外静态成员函数只能访问静态数据成员 在定义静态数据成员函数时,如果函数的实现代码处于类体之外,则在函数的实现部分不能在标static关键字。
class apple { public: static unsigned int price; int abc; void output(int data =price) //以静态数据作为默认参数 { cout<关于嵌套类和友元相关需要的时候再补充。
2.继承与派生2.1类的继承继承有3种派生方式,public,protected,private,”:”表示基类和派生类之间的继承关系,例如:
class phone { public: int size; char name[10]; }; class iphone:public phone { public : char version[10]; int sizes; }注意:私有成员不能被继承,在派生时若子类中定义了一个与父类同名的成员函数,此时子类会隐藏父类的成员函数
2.2继承后的可访问性公有型派生后基类该什么型还什么样,privated的还是不能访问
2.3构造函数访问顺序
保护型派生后原来的public和protected成员在派生类中均为protected,只是在派生类定义的时候可以访问,用派生类定义的对象不能访问,在类体外也不能访问,也就是说,protected成员可以被基类所有派生类使用,就是不能更改。
私有型派生基类中的private还是不能访问。从父类派生一个子类并声明一个子类对象时,它将先调用父类的构造函数,然后调用当前类的构造函数来创建对象,在释放对象的时候,先调用的是当前类的析构函数,最后是父类的析构函数。
无论调用的是那种子类的构造函数,都会先调用父类默认的构造函数,若想用父类带参数的构造函数则需要显示调用。例如:#include.... ... class father { public: int ID; char name [10]; father(char name[10]) { strcpy(char name[]); } father() { strcpy(name,"HH"); } ... }; class son:public father { public: char smallname[10]; son(char name[]):father(name) { cout<<.....<未完待续…
上一篇: 深入浅出net泛型编程
下一篇: WCF实现上传图片功能