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