黑马程序员技术交流社区

标题: 【武汉校区】独家分享:C++从结构体到面向对象 [打印本页]

作者: 武汉分校-小舞    时间: 2016-3-24 16:49
标题: 【武汉校区】独家分享:C++从结构体到面向对象
本帖最后由 武汉分校-小舞 于 2016-3-24 16:50 编辑

【武汉校区】独家分享:C++从结构体到面向对象
在C++中,函数可以放在struct内部,作为成员函数,
struct Person {
intid;
stringname;
       intage;
       Person() {
               cout << "Person()"<< endl;
       }
       Person(int _id,string _name,int _age) {
              id= _id;
              name= _name;
              age= _age;
              cout<< "Person(int _id,string _name,int _age)" << endl;
       }
       ~Person()
              cout<< "~Person()" << endl;
       }
       voidprintInfo() {
cout << "id="<< id << endl << "name=" << name <<endl << "age=" << age << endl;
       }
};

把函数放进结构体是从C到C++的根本改变,这引起我们将结构体作为新的概念去思考,在C中,结构体是数据的凝聚,它将数据捆绑在一

起,使得我们可以将这个结构体看作一个包,对结构体进行操作的函数放在别处,然而将函数放到了这个包之内,结构体就变成新的创造

物了,它既能描写属性又能描述行为,这就形成了对象的概念,对象是一个独立的捆绑的实体,有自己的记忆和活动。在C++中,对象就

是变量,它的最纯在的定义是一块内存,在这里能存放数据,而且还隐含着对这些数据进行处理的操作,将数据连同函数捆绑在一起的能

力可以用于创建新的数据类型,这就是所谓的封装
      
在C语音中,struct同其他任何数据结构一样,没有任何规则,调用者可以在struct中做任何事情,struct的成员完全对外暴露,C++引入

了访问控制对成员的访问进行了访问控制,

struct Person {
       private:
intid;
stringname;
          intage;
         public:
         void printInfo() {
cout << "id="<< id << endl << "name=" << name <<endl << "age=" << age << endl;
         }
}


上面的例子中,让struct Person中的数据隐成员隐藏起来,只有我们自己能访问他们,这种访问控制通常指实现细节的隐藏,将函数包含

在结构体内来产生一种带数据和操作的数据类型,这样通过访问控制将具体实现和接口分离开来,如果该接口用在一系列程序中,只能调

用public的函数,同时采用封装和访问控制可以防止一些情况的发生,而这在C语言的struct类型中是做不到的。有了封装和访问控制,现

在我们已经处在面向对象的编程的世界中了。


想获取最新传智播客武汉中心分享技术文章请加QQ  1641907557 ,后期会分享更多与实体班同步教程,助你冲击月薪20K!



推荐阅读:

《【武汉分校】UI实体班同步教程+海量素材,打造年薪20W全能设计师》
《黑马程序员Android实体班同步项目Demo源码汇总,挑战月薪20K!






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2