Date
Dec. 22nd, 2024
 
2024年 11月 22日

Post: C++ Primer 009 : 面向对象初步

C++ Primer 009 : 面向对象初步

Published 12:05 May 25, 2013.

Created by @ezra. Categorized in #Programming, and tagged as #C/C++.

Source format: Markdown

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;
}
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询