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;
}
 李二狗 — @Meniny
                李二狗 — @Meniny
             
            
             
                 
                