C++深入讲解类与封装的概念与使用
一、类的组合电脑一般而言是由 CPU内存主板键盘和硬盘等部件组合而成。二、类的封装类通常分为以下两个部分类的实现细节类的使用方式当使用类时不需要关心其实现细节当创建类时才需要考虑其内部实现细节例普通用户使用手机只需要学习如何发短信打电话拍照等等手机开发工程师需要考虑手机内部的实现细节封装的基本概念根据经验并不是类的每个属性都是对外公开的如女孩子不希望外人知道自己的体重和年龄如男孩子不希望别人知道自己的身高和收入而一些类的属性是对外公开的如人的姓名学历国籍等必须在类的表示法中定义属性和行为的公开级别类似文件系统中文件的权限C中类的封装成员变量C中用于表示类属性的变量成员函数C中用于表示类行为的函数C中可以给成员变量和成员函数定义访问级别public成员变量和成员函数可以在类的内部和外界访问和调用private成员变量和成员函数只能在类的内部被访问和调用下面看一段类成员的访问属性的代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#include stdio.hstructBiology{boolliving;};structAnimal : Biology{boolmovable;voidfindFood(){}};structHuman : Animal{voidsleep(){printf(Im sleeping...\n);}voidwork(){printf(Im working...\n);}};structGirl : Human{private:intage;intweight;public:voidprint(){age 22;weight 48;printf(Im a girl, Im %d years old.\n, age);printf(My weight is %d kg.\n, weight);}};structBoy : Human{private:intheight;intsalary;public:intage;intweight;voidprint(){height 175;salary 9000;printf(Im a boy, my height is %d cm.\n, height);printf(My salary is %d RMB.\n, salary);}};intmain(){Girl g;Boy b;g.print();b.age 19;b.weight 120;//b.height 180;b.print();return0;}下面为输出结果注意如果我们访问 boy 里面的 height因为是 private所以编译时就会报如下错误三、类成员的作用域类成员的作用域类成员的作用域都只在类的内部外部无法直接访问成员函数可以直接访问成员变量和调用成员函数类的外部可以通过类变量访问 public 成员类成员的作用域与访问级别没有关系注C 中用 struct 定义的类中所有成员默认为 public下面看一段类成员的作用域的代码123456789101112131415161718192021222324252627282930313233343536#include stdio.hinti 1;structTest{private:inti;public:intj;intgetI(){i 3;returni;}};intmain(){inti 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); // Errorprintf(test.j %d\n, test.j);// test.j 4printf(test.getI() %d\n, test.getI());// test.getI() 3return0;}下面为输出结果::i 意味着访问默认命名空间中的 i 变量默认的命名空间就是全局作用域。四、小结类通常可以分为使用方式和内部细节两部分类的封装机制使得使用方式和内部细节相分离C 中通过定义类成员的访问级别实现封装机制public 成员可以在类的内部和外界访问和调用private 成员只能在类的内部被访问和调用到此这篇关于C 深入讲解类与封装的概念与使用的文章就介绍到这了,