C++面向对象Word格式文档下载.docx
《C++面向对象Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++面向对象Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
stdio.h>
usingnamespacestd;
classstudent
{
public:
intage;
//这里定义类型的时候需要冒号:
char*sex;
//字符串可以采用这种方式定义
char*name;
};
//这里定义完类后需要加一个分号
//类中不能定义变量的值。
//只有静态常量整型数据成员才可以在类中初始化
intmain(intargc,_TCHAR*argv[])
{
studenttt;
tt.age=18;
tt.name="
liming"
;
tt.sex="
male"
cout<
<
tt.age<
'
\n'
tt.sex<
tt.name<
getchar();
}
4.实现类的方法
如果类中定义了方法,就需要在外面对他进行实现,实现的方法是加“:
:
”
char*sex;
char*name;
intadd(inta,intb);
//定义了函数
intstudent:
add(inta,intb)//在类外面实现函数
returna+b;
tt.add(3,4);
5.默认构造函数
在类里面,写一个与类同名的方法,就称为构造函数。
student();
//定义默认的构造函数
student:
student()//实现构造函数
age=10;
sex="
femal"
name="
zhulei"
//调用默认的构造函数来定义对象。
6.自定义构造函数:
//默认构造函数
student(inta,char*s,char*n);
//自定义构造函数,也称为重载构造函数
student()//实现默认构造函数
student(inta,char*s,char*n)//重载构造函数
age=a;
sex=s;
name=n;
//由默认构造函数来定义对象
studentdd(14,"
"
xiaohong"
);
//由重载构造函数来定义对象。
dd.age<
dd.sex<
dd.name<
7.析构函数:
析构函数与构造函数是相对的,它是在对象被撤销后消除并释放所分配的内存,析构函数与构造函数同名,只是前面有一个“~”号,析构函数没有返回值和参数,但也是需要实现的,但不需要写内容。
系统在结束最后自动回调用析构函数的。
~student();
//析构函数
student()
~student()
cout<
"
最后调用析构函数进行释放内存"
//getchar();
8.继承
classdog:
publicAnimal
class+类名+:
+访问限定符(public、private和protected)+父类名称。
1)访问限定符public:
表示对于基类(父类)中的public数据和方法,在派生类中仍然是public,对于基类中的protected数据成员和方法,在派生类中仍然是protected.
2)访问限定符protected:
表示对于基类中的public、protected数据成员和方法,在派生类中均为protected
3)访问限定符private:
表示对于基类中的public、protected数据成员和方法,在派生类中均为private.
classAnimal//基类
char*color;
voidmove();
voidAnimal:
move()//实现函数
DogisMoving"
publicAnimal//派生类继承于基类
dog();
voidrun();
dog:
dog()//实现默认构造函数
name="
xiaoming"
age=18;
sex="
color="
red"
voiddog:
run()//实现函数
dogisruning"
dogcdog;
cdog.age<
cdog.color<
cdog.name<
cdog.sex<
cdog.move();
//派生类调用基类函数
cdog.run();
//派生类调用自身函数
9.虚函数
在函数前面加入virtual关键字,就使该函数为虚函数。
classAnimal
virtualvoidmove();
//虚函数
10.纯虚函数:
在虚函数的末尾加上“=0”,就是一个纯虚函数,纯虚函数可以只有声明,没有实现。
一个类如果包含了纯虚函数,该类称为抽象类,我们只能从抽象类派生子类,不能声明抽象类对象,同时子类必须实现抽象类中的纯虚函数。
virtualvoidmove()=0;
//纯虚函数
//在子类中实现基类的纯虚函数
dog()
move()//通过子类实现纯虚函数
dogismoving"
11.多重继承
在C++中,允许一个类继承与多个基类,这很有用哦。
classBird
classFish
char*love;
publicBird,publicFish//实现多重继承
intvalue;
love="
jiejie"
value=10;
cdog.love<
cdog.value<
12.派生类调用两个基类中名字相同的方法:
voidBird:
move()
Birdismove"
voidFish:
Fishismove"
publicBird,publicFish
cdog.Bird:
move();
cdog.Fish:
//这时就需要具体说明调用哪一个类的方法。
13.静态成员数据:
是指其数据属于类,通过类名就可以访问的成员数据。
在声明时,只需要前面加入关键字static。
静态成员数据可以由类名就可以直接访问。
普通成员不能通过类名来访问,只能通过对象来访问。
staticintage;
intFish:
age=10;
//直接通过类名来访问,不过前面要加数据类型名:
int
静态方法也是一样,但静态方法里面只能访问静态成员。
14.友元素
在类A中将类B声明为友元素,那么类B中就可以访问类A中的私有数据和方法了。
友元关系不能传递,也不能继承。
private:
char*color;
friendclassFish;
//设为友元素
Bird();
Bird:
Bird()//默认构造函数实现
color="
Birdbird;
//由类Bird来定义一个对象
char*move();
Fish();
char*Fish:
returnbird.color;
Fish:
Fish()
love="
age=18;
Fishcdog;
定义友元函数:
friendchar*Fish: