Table of Content
本篇主要介绍C++ 中的面向对象基础。
面向对象
什么叫对象
对象(Object)就是事物,万物皆对象,具有两个特性: 属性和行为。
什么叫面向对象
通过属性和行为两大特性去分析一个对象的方法,就叫做面向对象思想。我们知道 C 语言是一门面向过程的语言,而 C++ 是一门既可以面向过程也可以面向对象的语言。
什么叫面向对象的编程
通过面向对象的思想分析对象之后,采用一门面向对象的编程语言去编码实现功能,就叫做面向对象编程。
类
将很多对象的共性提取出来之后再组合到一起,就形成了类(Class)。
例如:
学生类:
属性:姓名 年龄 爱好
行为:吃饭 学习 打游戏
教师类:
属性:姓名 年龄 爱好
行为:吃饭 学习 讲课
定义类
class 类名 {
// ...
};
成员变量
前面说过类中包含了属性,这些属性就叫做成员变量。
class 类名 {
数据类型 成员变量名;
// ...
};
举个栗子:
class Student {
string m_name; //姓名
int m_age; //年龄
};
成员函数
除了属性,类中还还有行为,它们成员函数。
class 类名 {
返回值类型 函数名(形参列表) {
// 函数体
}
};
举个栗子:
class Student {
string m_name;
int m_age;
// 提供了一个学习的行为:
void learn(string lesson) {
printf("学习ing");
}
};
访问控制属性
public | 公开的 |
---|---|
protected | 保护的 |
private | 私有的 |
访问控制符 | 访控属性 | 本类 | 子类 | 其它 |
---|---|---|---|---|
public | 公开的 | √ | √ | √ |
protected | 保护的 | √ | √ | |
private | 私有的 | √ |
结构体和类的区别
-
关键字不同
-
结构体中的成员默认访问属性是公开的,类中的成员默认访问属性是私有的
/*
类的使用 Demo
*/
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string m_name;//姓名
int m_age;//年龄
public:
//展示的行为
void show(void) {
cout << m_name << m_age << "岁" << endl;
}
//学习的行为
void learn(string lesson) {
cout << "正在学习" << lesson << endl;
}
//提供一个修改姓名的成员函数
bool setName(string name) {
//length()函数表示计算name中字符的个数
if(name、length() == 0)
{
return false;
}
m_name = name;
return true;
}
//提供一个修改年龄的成员函数
bool setAge(int age) {
if(age < 0 || age > 150)
{
return false;
}
m_age = age;
return true;
}
};
int main(void) {
Student/*数据类型*/ s/*对象*/;
//s、m_name = "张飞";
//s、m_age = 30;编译报错,成员变量私有
s、setName("张飞");
s、setAge(30);
s、show();
s、learn("C++");
return 0;
}