C++解析(10):struct和class的区别
0.目录
1.默认访问级别
2.默认继承方式
- 2.1 分别独立继承
- 2.2 struct继承class
- 2.3 class继承struct
3.小结
1.默认访问级别
- 在用struct定义类时,所有成员的默认访问级别为public
- 在用class定义类时,所有成员的默认访问级别为private

2.默认继承方式
2.1 分别独立继承
- struct继承struct时,默认继承方式为public
- class继承class时,默认继承方式为private
2.2 struct继承class
struct继承class时,默认继承方式为public。
示例代码:
#include <stdio.h>
class Biology
{
public:
int i;
int get_i() { return i; }
};
struct Animal : Biology
{
int j;
int get_j() { return j; }
};
int main()
{
Animal animal;
animal.i = 1;
animal.j = 2;
printf("i = %d\n", animal.get_i());
printf("j = %d\n", animal.get_j());
return 0;
}
运行结果为:
[root@bogon Desktop]# g++ test.cpp
[root@bogon Desktop]# ./a.out
i = 1
j = 2
2.3 class继承struct
class继承struct时,默认继承方式为private。
示例代码:
#include <stdio.h>
struct Biology
{
int i;
int get_i() { return i; }
};
class Animal : Biology
{
public:
int j;
int get_j() { return j; }
};
int main()
{
Animal animal;
animal.i = 1;
animal.j = 2;
printf("i = %d\n", animal.get_i());
printf("j = %d\n", animal.get_j());
return 0;
}
运行结果为:
[root@bogon Desktop]# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:5: error: ‘int Biology::i’ is inaccessible
test.cpp:19: error: within this context
test.cpp:6: error: ‘int Biology::get_i()’ is inaccessible
test.cpp:22: error: within this context
test.cpp:22: error: ‘Biology’ is not an accessible base of ‘Animal’
改成public继承后:
#include <stdio.h>
struct Biology
{
int i;
int get_i() { return i; }
};
class Animal : public Biology
{
public:
int j;
int get_j() { return j; }
};
int main()
{
Animal animal;
animal.i = 1;
animal.j = 2;
printf("i = %d\n", animal.get_i());
printf("j = %d\n", animal.get_j());
return 0;
}
运行结果为:
[root@bogon Desktop]# g++ test.cpp
[root@bogon Desktop]# ./a.out
i = 1
j = 2
3.小结
- 在用struct定义类时,所有成员的默认访问级别为public
- 在用class定义类时,所有成员的默认访问级别为private
- 默认是public继承还是private继承,取决于子类而不是基类
- 子类是struct,默认继承方式为public
- 子类是class,默认继承方式为private
C++解析(10):struct和class的区别的更多相关文章
- C#中struct和class的区别详解
本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...
- C#中struct和class的区别详解 (转载)
本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...
- struct与class的区别
C++中的struct是对C中struct的扩充,它已经不再只是一个包含不同数据类型的数据结构,因为其扩充了太多功能.总的来说,C++中struct和class极其相似,比如,struct能包含成员函 ...
- C++学习基础十三——struct和class的区别
来自:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct是对C中struct进行了扩展,它不单是一个包含不同数据类型的数据 ...
- JAVA Apache POI 之sax 解析10万级大数量数据
第一步让我们来看看我们的大量数据的excel 文件 好的下面第二步看一下代码: package com.chinait.utils; /** * 写这个东西主要是最近做了一个联通的数据迁移工作,他们就 ...
- C#中Struct与Class的区别
class和struct最本质的区别是class是引用类型,而struct是值类型,它们在内存中的分配情况有所区别. 什么是class? class(类)是面向对象编程的基本概念,是一种自定义数据结构 ...
- C#经典面试题 C# 中 Struct 与 Class 的区别,以及两者的适用场合
在一家公司面试时,第一个问题就是问到这个 转载 文章 http://www.cnblogs.com/waitrabbit/archive/2008/05/18/1202064.html 来解释此问题 ...
- 在什么情况下使用struct,struct与class的区别
Struct定义和使用 类是引用类型,是保存在托管堆中的.通过定义类,我们可以在数据的生存期上得到很高的灵活性,但是也会让程序的性能有一定的损失.虽然这种损失很小,但当我们只需要定义一个很小的结构时, ...
- 转 class和struct最本质的区别
class和struct最本质的区别是class是引用类型,而struct是值类型,它们在内存中的分配情况有所区别. 什么是class? class(类)是面向对象编程的基本概念,是一种自定义数据结构 ...
随机推荐
- Ceph学习之路(二)之Ceph的工作原理及流程
一.RADOS的对象寻址 Ceph 存储集群从 Ceph 客户端接收数据——不管是来自 Ceph 块设备. Ceph 对象存储. Ceph 文件系统.还是基于 librados 的自定义实现——并存储 ...
- OpenStack入门篇(八)之镜像服务Glance
一.Glance的概述 Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是 ...
- Spring学习(十二)-----Spring Bean init-method 和 destroy-method实例
实现 初始化方法和销毁方法3种方式: 实现标识接口 InitializingBean,DisposableBean(不推荐使用,耦合性太高) 设置bean属性 Init-method destroy- ...
- VIN码识别/车架号识别独家支持云识别
VIN码(车架号)对于懂车的人来说并不陌生,不要小看这一串字符,从VIN码中可以读懂车辆的生产厂家.年代.车型.车身型式及代码.发动机代码及组装地点等信息. 一辆汽车的VIN码也是车辆的唯一身份证明, ...
- Appium+python 自动发送邮件(1)(转)
(原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...
- vue的ui库使用Element UI,纯html页面,不使用webpack那玩意
使用手册访问:https://cloud.tencent.com/developer/doc/1270 第一步:在head添加样式 <link rel="stylesheet" ...
- Unity Lighting - Light Probes 光照探针(十)
Light Probes 光照探针 Only static objects are considered by Unity’s Baked or Precomputed Realtime GI s ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- 131. 分割回文串 javascript实现
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa",&quo ...
- 【ANSIBLE】ansible控制windows插件安装及运行error与解决方法
一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: https://pypi.python.org/packages/b6/ac/70 ...