问题:struct和class的区别,struct能否包含成员函数

来源:互联网 发布:知之深爱之切原文阅读 编辑:程序博客网 时间:2024/06/07 14:23
/********************************************************************************************文件说明:        struct和class的区别时间地点:        陕西师范大学 问津楼 2017.5.18作    者:        九 月*********************************************************************************************//********************************************************************************************(一)问题在我具体说明struct和class区别之前,我首先抛出几个问题,这也是我第一次在阅读OpenCv源代码的时候所思考的问题:    1)struct是否有成员访问控制符public、protected、private?    2)struct能够包含成员函数?3)struct能够被其他结构体或者类继承?像class person:public human{};4)struct能否包含虚函数,实现多态?5)如果上面的功能struct都能够实现,那C++中为什么还要出现class?(或者说struct和class最本质   的区别是什么?)(二)解答    要回答上面的问题,首先必须设定一个前提条件,否则是说不明白的:1)C语言中的struct:如果您向那些C语言的初学者或者精通C语言但没有接触过C++的人抛出上面的问题,      它们可能会认为您有病,因为,我第一次遇见struct里面包含成员函数的时候,也是这样想的。但  是程序确实可以编译成功,但是就迷糊了,难道是我以前看的树错了?其实不是这样。    2)毫无疑问,C语言中的struct是不能包含成员函数的,不然很多源代码为什么要用函数指针去替代      成员函数,例如linux操作系统中的源代码,struct是没有包含成员函数的,它们如果想包含成员函  数的话,都是通过包含函数指针实现的。    3)因此,说struct中不能包含成员函数指的的c语言中的struct,不信的话,你可以写一个包含成员函数      的struct在ubuntu环境下,使用gcc编译一下,看能不能通过    1)那为什么struct有可以包含成员函数呢?这个struct指的是C++中的结构体2)C++在增加了class类型以后,为了兼容C语言,所以仍然保留了struct结构体类型,但是对struct类型   进行了扩充,经过扩充之后的struct就可以包含成员函数,实现继承、多态等。3)那么,既然struct可以实现与class相似的功能,它与class本质的区别在那块?   struct和class最本质的区别只有一个:那就是struct结构体类型中的所有成员默认为public,而class   类型默认为private。除此之外,其他完全相同。*********************************************************************************************/