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

/********************************************************************************************
文件说明:
        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。除此之外,其他完全相同。
*********************************************************************************************/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值