首先,明白c++和C语言的区别:
- C语言面向过程,c++面向对象;
- 面向过程:即我们着力于项目的每个过程动作,实现每一个动作方法,分析出求解问题的步骤,通过函数调用逐步解决问题;
- 面向对象:即着力于对象,从对象个体出发,看对象的需求,将一件事情拆分成不同的对象,靠对象之间的交互完成;
- 由于c++面向对象的特点,类和对象就由此产生;
- 类:是抽象的一个类别;
- 对象:是类的实例化,相当于现实世界的实体;
类的实现:
- 将C语言中的struct进行延伸,c++中的struct可用来实现类;即可在struct内定义变量和函数;
struct Student
{
void SetStudentInfo(const string name, const string gender, int age)
{
strcpy(name, name);
strcpy(gender, gender);
age = age;
}
void PrintStudentInfo()
{
cout<<name<<" "<<gender<<" "<<age<<endl;
}
string name;
string gender;
int age;
};
- 在c++中我们常用class来定义类
class Student
{
void SetStudent(const char* name, const char* gender, int age)
{
strcpy(_name, name);
strcpy(_gender, gender);
_age = age;
}
void PrintStudent()
{
cout<<_name<<" "<<_gender<<" "<<_age<<endl;
}
char _name[20];
char _gender[3];
int _age;
};
类的访问限定符:
- public修饰的成员在类外可以直接被访问,public修饰的成员函数类内可访问public、protected、private修饰的成员;
- protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的),而类内protected修饰的成员函数不能访问public修饰的成员,private修饰的成员函数不能访问public、protected修饰的成员;
- 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止;
- class的默认访问权限为private,struct为public(因为struct要兼容C);
- 访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别。
类的实例化:用类类型创建对象的过程,称为类的实例化
- 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它;
- 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量;
- 类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。