C++类、访问修饰符

34 阅读1分钟

为什么需要类?

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。 类是 C++ 的核心特性,通常被称为用户定义的类型。

类是如何定义的

答案是 class关键字,具体例子如下:

class Box  // 类名首字母大写
{
    xxxx
};

访问修饰符

修饰符一般有三种 publicprivateprotected,具体例子如下

class Base
{
    public:
        string name;   // 公有成员
    protected:
        int age;   // 受保护成员
    private:
        double length;  // 私有成员
};

接下来我们一种一种的介绍他们的访问权限

1. public(公有成员)

公有 成员在程序中类的外部是可访问的。例子

#include <iostream>

using namespace std;

class Line
{
  public:
    string name = "张三";
    int age = 18;
};

int main()
{
  Line line;
  cout << "名字:" << line.name << endl;
  cout << "年龄:" << line.age << endl;

  return 0;
}

执行结果如下:

名字:张三
年龄:18

2. private(私有成员)

私有成员变量或函数在类的外部是不可访问的;如果你强行访问也行,编译会告诉你究竟行不行,接下来让我用例子来印证这个观点吧

#include <iostream>

using namespace std;

class Line
{
  public:
    string name = "张三";
    int age = 18;
    
  private:
    double weight;  // 私有成员
  
};

int main()
{
  Line line;
  cout << "名字:" << line.name << endl;
  cout << "年龄:" << line.age << endl;
  cout << "体重:" << line.weight << endl;  // 类外部访问私有成员

  return 0;
}

理论是编辑器不应该让我用对象去访问到私有成员,但是vscode却神奇般的能对象.出私有成员

插播知识点,上述提到的对象是啥?

例如上面的类是Line;

实例化则是:Line line

实例化之后则会得到一个对象:line

这会应该能看懂上面那句对象.私有成员的话了吧?

1694182425107.jpg 不过问题也不大,编译是不能通过的

2.jpg 问题来了,私有成员存在的意义是干嘛的?

它像人一样都会有一些东西不想让别人知道;但是类的私有成员通常会搭配一个get 和 一个set 方法给对象调用

3.jpg 实现getset

4.jpg 现在对象则可以使用这两个方法来操作私有成员了

5.jpg 执行结果如下:

6.jpg

3. protected(私有成员)

这个玩意涉及到继承,后续文章再介绍它。