河北承德建设工程信息网站,英文谷歌seo,重庆seo全面优化,互联网创业有哪些项目可以做类与对象
我们在C语言中自定义的struct 叫做结构体#xff0c;而在C中我们把struct升级为了类#xff0c;并且还加入了一个class#xff0c;也称为类#xff0c;那么我们今天就来看一下结构体和类的不同和相同
1.结构体与类
我们在C语言中的结构体是struct#xff0c;而…类与对象
我们在C语言中自定义的struct 叫做结构体而在C中我们把struct升级为了类并且还加入了一个class也称为类那么我们今天就来看一下结构体和类的不同和相同
1.结构体与类
我们在C语言中的结构体是struct而在我们的C中升级成了类
我们先看一下它们有什么不同 我们先看一下C语言中结构体是如何定义的这个是我们在C语言中的结构体如果我们像定义一个obj的对象该怎么弄 我们看到就是这样我们需要把struct也写上所以在C语言中o变量的类型就是struct obj那么如果我们在C中该怎么做呢 我们在C中struct升级为了类而在C中我们的obj就是对象名但是我们也可以前面加struct因为这是为了兼容C语言的语法不过如果想在C语言中也直接使用obj也是可以的需要在前面加typedef这个就不演示了
2.类
既然struct在C中升级为了类那么C中其他的类的特性是什么
我们下面来看一下。
在C中除了struct可以定义自定义类型外还可以用class来定义我们先用struct来看一下
由于C语言的封装性太差我们可以直接访问到类里面的对象所以使用起来并不是特别的好那么在C中我们还可以在类里面写函数我们还加入了访问限定符private protected public这三个限定符的作用是有不同的作用
下面我们来看一下
2.1 访问限定符
首先是private 这个是private这个有什么作用呢 如果我们想访问这里面的三个变量中的任意一个可以吗 我们看到是不可以的因为private的意思是私有在private到下一个访问限定符之前里面的成员函数或者是成员变量都是在该类外面不可访问的所以不可以直接这样访问
下面在看一下protected 如果是protected呢
我们还是访问里面三个变量中的任意一个 我们看到protected和private在这里一样都是在类外面不可访问的这里看不出他们的区别后面会有不一样的这里先不说
还剩一个public 这时候我们还是访问里面的变量 这时候我们再看一下 我们访问能不能成功 我们看到 这时候是可以访问的并且还可以修改
2.2 struct 和 class的区别
那么steuct和class的区别是什么呢
同样是自定义类型他们的区别在哪里呢
我们来看一下
如果我们不给访问限定符会怎么样 这时候我们没有给访问限定符我们想访问一下这里面的变量可以吗 我们看到是可以的
那么如果这时候我们换成class会怎么样呢 我们现在还是访问里面的变量 我们看到是不可以访问的并且我们看到显示stack里面的a是private的这里说明我们的class没有给访问限定符但是默认访问限定符是private的而我们的struct默认访问限定符是public的 结构体和类的区别 2
在C语言结构体中里面只可以放变量但是在类中我们还可以放函数
我们来看一下因为这样可以更好的管理 我们还可以这样把属于这个类的函数也放在这个类里面在类里面的函数我们成为成员函数在类里面的函数而会自动成为内联函数
那么如果我们想调用这个类里面的函数怎么调用呢
我们在类里面的函数我们直接这样调用 我们直接 “对象.“调用
我们来看一下 我们调用成功 2. 隐藏的this指针
我们来看一个类 我们这里有一个日期类
我们继续看 我们现在定义两个日期类的对象并且初始化一个然后我们就分别打印两个对象我们会发送什么呢 我们一个是缺省值另一个是给定的值
但是我们调用这个Print函数为什么会打印出不同的内容呢也就是我们可以分别打印出d1 和 d2的值呢
这是为什么呢
这里直接说了因为在我们成员函数中都有一个默认的this指针 就像这样如果调用这两个函数我们的d1. 和 d2. 分别会传入Print函数就像这样 然后我们打印的时候是这样打印 我们就是这样调用那么我们传入的时候也是这样 我们调用的时候就是把d1和d2这样传入进去
但是我们在对成员函数传参的时候我们不能显示的传入this指针也不能显示的在函数参数那里显示的加上this指针 。
而this指针的传入1编译器就帮我们做了所以我们也不需要显示的传但是我们可以在函数中显示的使用 就像这样我们可以显示的使用
正是因为有这个this指针所以我们可以准确的打印出对应变量里面的值
所以如果我们想写这个函数的Init函数我们可以直接这样 我们可以这样初始化 我们打印看一下 我们看到是可以的这个就是隐藏的this指针