Date
Jul. 14th, 2024
 
2024年 6月 9日

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
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF