本篇主要介绍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(namelength() == 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;编译报错,成员变量私有
    ssetName("张飞");
    ssetAge(30);
    sshow();
    slearn("C++");
    return 0;
}