前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++中的类的封装

C++中的类的封装

作者头像
用户6280468
发布2022-03-21 09:23:49
6580
发布2022-03-21 09:23:49
举报
文章被收录于专栏:txp玩Linux
前言

昨天分享了面向对象里面的类和对象的基本概念,今天我们继续来分享c++里面的类里面的其它用法。(每天积累一点点,日积月累你也是专家!)。

类的封装

1、在C++中,当我们使用类的时候,我们首先要注意类的实现细节和类的使用方式(也就是说我们在做任何事情前,先要考虑好事情的大局观甚至加一些要注意的细节问题,不然一拿到一件事情,没有方向性的去做事情,往往最终结果会适得其反!):

  • 当使用类时,不需要关心其实现细节。比如说,对于我们经常使用手机的用户来说,你只需要学习如何发短信,打电话,拍照等,用户并不需要明白这其中的原理。
  • 当创建类时,才需要考虑其内部实现细节。对于我们手机研发工程师来讲的话,就需要明白手机里面的许多工作原理和一些其它细节了,不然就无法开发出手机了。

2、封装的基本概念:

对于类来说,类的每一个属性并不是都对外开放的——就好比来说,女孩子不希望外人知道她的体重和年龄,男孩子不希望外人知道他的身高和实际收入一样。

然而对类来说,它的一些属性是可以对外开放的——想必在学校读书的时候,如果大家注意看学校光荣榜的话,你会发现光荣榜上每一个获得荣誉的人,都会介绍他(她)的姓名和所学专业以及出生地等等信息。

最后我们要注意的是,必须在类的表示法中定义属性和行为的公开级别(类似于文件系统中文件的权限)。

3、C++中类的封装:

——成员变量:C++中用于表示属性的变量。

——成员函数:C++中用于表示类行为的函数。

——C++中可以给成员变量和成员函数定义定义访问级别:

  • public: 表示成员变量和成员函数可以在类的内部和外部访问和调用。
  • private: 表示成员变量和成员函数只能在类的内部被访问和调用;类的外面是不能访问和调用的,不然编译器时会报错的。下面我来看一个实际例子:
代码语言:javascript
复制
 #include <stdio.h>
 struct Gril
 {
     private:
          int age;
          int weigth;
     public:
          void print()
         {
             age=24;
             weigth=55;

             printf("I'm a gril,I'm %d years old!\n",age);
             printf("My weiht is %d kg!\n",weigth);

          }
    };

   struct Boy
  {
     private:
                  int height;
                  int salary;
         public:
                  int age;
                  int weigth;

                  void print()
                 {
                        height = 175;
                        salary = 9000;
                        printf("I'm a boy,my helight is %d cm!\n",height);
                        printf("My salary is %d RMB!\n",salary);    
                 }  
    };
  int main(void)
  {
      Gril g;
      Boy  b;

      g.print();

      b.age=24;
      b.weigth=120;
      //b.height=190;

      b.print();    


      return 0;
  }

演示结果:

代码语言:javascript
复制
I'm a gril,I'm 24 years old!
My weiht is 55 kg!
I'm a boy,my helight is 175 cm!
My salary is 9000 RMB!

如果我调用b.height的话,它会报下面这样的错误(编译器在告诉程序员这个成员变量是私用有的,外部不能够再去调用它):

代码语言:javascript
复制
  Error:int Boy::height is private

4、类成员的作用域:

  • 类成员的作用域都只在类的内部,外部无法直接访问。
  • 成员函数可以直接访问成员变量和调用成员函数。
  • 类的外部可以通过类变量访问public成员。
  • 类成员的作用域与访问级别没有关系。
  • 注意一点:在C++中使用strcut定义的类,类中的所有成员(成员变量和成员函数)默认为pubic(公有的,外部可以调用和访问)。下面我来举个例子:
代码语言:javascript
复制
 #include <stdio.h>

 int i = 1;

 struct Test
 {
    private:
         int i;

    public:
         int j;

         int getI()
        {
            i = 3;

            return i;
        }
  };

  int main()
  {
       int i = 2;

       Test test;

       test.j = 4;

       printf("i = %d\n", i);              // i = 2;
       printf("::i = %d\n", ::i);          // ::i = 1;
      // printf("test.i = %d\n", test.i);    // Error
       printf("test.j = %d\n", test.j);    // test.j = 4
       printf("test.getI() = %d\n", test.getI());  // test.getI() = 3

       return 0;
  }

演示结果:

代码语言:javascript
复制
i = 2
::i = 1
test.j = 4
test.getI() = 3

这里的话,有一个符号如果初学者看到的话不认识,"::"表示作用域操作符,这里"::i"表示默认的命名空间的使用(关于命名空间的介绍,明天的文章把这个命名空间的基础来介绍完)。 总结

------好了,今天的分享就到这里了,晚安!在看的朋友给个看,多谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 txp玩Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档