A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 武汉分校-小舞 于 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!

您需要登录后才可以回帖 登录 | 加入黑马