前面讲的面向过程和面向对象,大家都有了基本的了解,也用struct定义了类,那么接下来咱们就用C++提供的另一个关键字class来定义类,同样的我们还是使用前面的学生结构,首先直接把struct改成class看有没有什么问题。
class Stu //定义学生结构
{
int id;
int age;
char name[10];
void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
id = sid;
age = sage;
strcpy(name, sname);
}
void showStuInfo()
{
cout << id << " " << age << " " << name << endl;
}
};
int main()
{
Stu cPlus;//前面讲过在C++中可以省略,struct关键字
cPlus.init();// error “Stu::init”: 无法访问 private 成员
cPlus.showStuInfo();//error “Stu::showStuInfo”: 无法访问 private 成员
return 0;
}
编译代码会发现,有两处错误,大概的意思都是说无法访问private成员,那么什么意思呢?这就是struct和class的不同之处了:
- struct 默认是公有(public)的:即在类的外面可以访问类里面的成员(如果没有指定权限访问限定符)
- class 默认是私有(private)的:即在类的外面不可以访问类的成员(如果没有指定权限访问限定符)
相同点:
- 都可以使用权限访问限定符来修改类成员,在外部的访问权限(除此之外struct和class没有任何区别)
对于上面的代码,我们可以这样修改一下在类中的最上面加上public,这样就可以在外面随意访问成员啦
如果说只想让外部能够访问成员函数,而不想让外部访问到成员变量,那么可以这样
至于protected访问限定符,是作用与派生类中的,这个后面会讲到(对于类的外部来说,和private一样)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C++
+关注
关注
21文章
2066浏览量
72900 -
Class
+关注
关注
0文章
52浏览量
19524 -
Struct
+关注
关注
0文章
29浏览量
10817
发布评论请先 登录
相关推荐
鸿蒙TypeScript 开发学习第9天:【TypeScript Number】
TypeScript 与 JavaScript 类似,支持 Number 对象。
Number 对象是原始数值的包装对象。
类对象分配内存错误怎么办
请大神帮忙,万分感谢!!!操作系统:ucosIII 芯片:STM32F103我的类建立比较多。类对象是指针CCarriage*gCar;分配内存语句:gCar = new CCarriage
发表于 05-25 09:51
深入理解Java虚拟机-判断对象存活状态
深入理解Java虚拟机之判断对象是否存活 我们知道Java虚拟机中对象的存储位置在堆上,所以GC回收主要也就是在堆上进行的,那么垃圾收集器在进行对象回收的时候肯定不能随便收集,必须要判断对象
发表于 11-29 01:06
•1016次阅读
下一个可能制裁对象是中芯国际
继叙利亚之后,美国再次对中国实施了精确打击; 2.老杳:对中兴被美国禁售芯片七年的几点判断; 3.赛迪智库:美对我下一个可能的制裁对象是中芯国际; 4.被认为对美国国家安全造成威胁 华为紧缩在美开支
Java教程之零点起飞学Java的类与对象资料说明
类与对象是进行面向对象编程的基础。类是具有相同属性特征和行为规则的多个对象的一种统一描述,对象是对类的实例化。在Java语言中,类是一种最基本的复合数据类型,是组成Java程序的基本要
发表于 02-20 10:41
•14次下载
产业互联网的浪潮里淘金
产业互联网的说法是基于改造对象的不同延伸出来的,同消费互联网时代的改造对象是C端用户不同,这个时代的改造对象是C端的供给侧B端。
发表于 01-09 14:17
•374次阅读
薄膜在线污点检测仪的检测对象是什么
导读:由于传统的人工肉眼检测速度慢、精度低、易于疲劳,不能满足现代生产要求。赛默斐视薄膜在线污点检测仪能在线对生产过程中产生的表面缺陷瑕疵进行高速、精确的检测,显示和识别薄膜表面上的所有表面缺陷。能检测分别出直径 0.01mm-2mm的脏污点、条纹、破损、边缘裂缝、皱折、暗斑、亮斑、边缘破损、黑点疵点、毛发,蚊虫,等常见表面缺陷。 赛默斐视薄膜在线污点检测仪检测原理: 赛默斐视薄膜在线污点检测仪整体采用工业CCD相机在线
发表于 03-19 15:58
•319次阅读
在线瑕疵检测仪的检测对象是什么
导读:由于生产工艺及现场环境等影响,容易造成薄膜表面出现黑点、晶点、麻点、破洞、线条、褶皱、蚊虫、划伤等瑕疵,不仅影响严重薄膜产品的外观,更是给企业带来经济损失。只有在生产过程中及时检出薄膜表面的瑕疵缺陷,从生产的根源来消除瑕疵,控制和提高薄膜的表面质量,才是*行之有效的办法。 传统的检测方法如人工目视抽检速度慢、精度低、易疲劳已经远远不能满足现在工业生产中高速、高分辨率和无损只能检测的要求。基于CCD的
发表于 04-08 15:36
•212次阅读
Python中的类和对象详解
Python 是一种面向对象的编程语言,它支持类和对象。类是一种用户自定义的数据类型,用于定义对象的属性和方法。对象是类的实例,它包含类的属性和方法的实际值。
java中的equals是什么意思
在Java中,equals是一个用于比较对象是否相等的方法。该方法来自于Object类,所有的Java类都继承了该方法。equals方法的默认行为是比较对象的内存地址,即判断两个对象是否是同一个
评论