1.1 类的定义
class <类名>{
<<private:>>
<成员表1>;
<<public:>>
<成员表>;
<<protected:>>
<成员表>;
};
注意在类的定义中,结尾要有";",类的成员分为两类:一类是数据成员,一类是成员函数。数据成员的定义与一般变量相同,只是类中可以设置外界对类内成员的访问权限。
注意:
类只是一种自定义数据类型,类中任何成员数据均不能使用关键字extern,auto或register限定存储类型,也不能初始化。
class Circle{
int r=5; //错误,因为不能直接初始化数据成员
extern float pi;//错误,因为不能使用关键字extern修饰
};
成员函数可以直接使用类内的任一成员,包括数据成员和函数成员
类类型和结构体类型相似,差别在于,类类型的默认访问权限为private,而结构体是public。
1.1.1 类成员的访问控制
类的成员的访问权限:
public(公有的): 公有成员可被与该类对象处于同一作用域内的任何函数访问。
private(私有的) :私有成员只能被类中的成员函数及该类的友元函数访问
protected(保护的):保护成员只能被类中成员或派生类的成员函数或该类的友元函数访问。
1.1.2 类的成员函数
class Person{
char name[10];
char sex[4];
int age;
public:
int GetPerson(const char* name, const char* sex, const int age);
char * GetName(char *Name);
char *GetSex(char *Sex);
int GetAge();
void print_info();
};
1.2 对象
类是用户自定义数据类型,定义一个类之后就可以说明变量。
class_name object1;
数据类型仅是数据的存储模型,系统并不为存储类型分配存储空间,因此,当说明类的对象时,系统才为对象分配存储空间。
定义一个对象的指针。
Person person;
Person *p=&person;
可以看出,p是对象person的指针,指针变量p的类型为Person。可以通过指针访问对象的成员:
p->print();
或者:
(*p).print();
1.2.1 对象数组
若一个数组中每个元素都是同类型的对象,则称该数组为对象数组。
对象数组的定义,赋值和引用与普通数组一样。
<类名><数组名>[<整型常量表达式>];
eg: Person person[10];
1.2.2 this指针
通常在对象的成员函数中访问该对象的成员时,只要给出某成员名即可。实际当成员函数被调用时,系统自动向它传递一个隐含的指针,该指针式调用该成员函数的对象的指针,在成员函数中可以直接用this使用该指针。如下:
void SetRadius(int r)
{
this->radius=r;
}
此时,this指针具有如下默认说明
circir *const this;
即this指针式其类型与所指对象相同的const指针,但是不允许改变该指针的值,也就防止了被修改该指针。