我对类和结构的一点理解
1 首先说明一下到目前为止我掌握的一点点的知识。
A 类是引用类型。 可以自动以默认的构造的函数。
B 结构是值类型,所有的值类型都是基于结构类型的, 不可以自动以默认的构造函数。
C 类和结构进行比较的时候都是比较他们的引用,但是为什么值类型进行比较的时候会认为他们是相同的,或者是不相同的那,这是因为值类型都是先了一个接口Tcompare 。这样即使是两个值类型的地址空间不一样,也不会认为他们是相同的,而是相同的,应该是实现了两个接口,另外一个接口是什么,有时间进行研究一下。
对字段的初始值有一个简便的语法支持,类是支持的,而结构是不支持的。
struct structStu{int i ; //int i =5 这么做是错的的写法 为什么这么写是错误的啊,因为struct不能自定义默认的构造函数。int j ;public structStu(int ii){i=ii ; //构造函数必须对所有的变量进行初始化。j = ii; //如果没有这行代码,也是错误的。}}
D 什么情况下使用结构
和简单值类型具有相似的行为。 所有的简单值类型都是基于结构类型的。
数据成员大小在16kb一下。 因为结构的内存是分配在栈上的,如果频繁使用的话,会导致数据被大量的复制。
不需要特别的初始化操作。 这是因为结构不提供默认的构造函数。
F 结构是一种轻量级的数据封装结构。
本人的疑惑点 :
结构分配到堆上,和分配到栈上有啥区别 ?
栈 是系统分配的,先进后出的原这。地址是连续的,效率比较快。
堆 是程序员分配的,地址不连续,效率比较慢。
综上所述, : 结构是一个特殊的类型,没有理解清楚的情况下,少用,否则会带来程序资源的极大浪费,以及计算效率的低下。
以后有时间了 写一个结构的专题吧!
转载于:https://www.cnblogs.com/sdgxbooy/archive/2012/01/08/8902793.html
我对类和结构的一点理解相关推荐
- 谈谈对APC的一点理解
谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...
- python 类中定义列表_Python-从类定义中的列表理解访问类变量
小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...
- 《从零开始学Swift》学习笔记(Day 30)——选择类还是结构体呢?
原创文章,欢迎转载.转载请注明:关东升的博客 类和结构体非常相似,很多情况下没有区别.如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体? 类和结构体异同: 类和结构体都有如下功能: ...
- JVM_01 内存结构(深入理解+图解)
本文笔记参考创智播客JVM课程 和<深入理解Java虚拟机第三版> 传智播客JVM 一.JVM 入门介绍 1.1 JVM 定义 Java Virtual Machine,JAVA程序的运行 ...
- Python:类与结构体
Python的类提供了面向对象编程的所有标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相同的名字调用基类中的方法. 1. Python的域(scopes)和名 ...
- bottleneck resnet网络_关于ResNet网络的一点理解(网络结构、building block 及 “bottleneck” building block)...
[时间]2018.10.05 [题目]关于ResNet网络的一点理解(网络结构.building block 及 "bottleneck" building block) 概述 本 ...
- 再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类
上次我对C#类与结构体做了一次速度评测(http://blog.csdn.net/zyl910/article/details/6788417).经过一段时间思索,发现还可以进一步探讨-- 第一.栈变 ...
- C++_类和结构体所占内存大小,静态成员问题
C++_类和结构体所占内存大小,静态成员问题 静态成员未初始化或者未调用(当然静态成员必须类外初始化才能调用)是不占内存的.静态成员不占类或结构体的内存 静态成员函数同样只声明未定义同样不占内存 指针 ...
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法 ...
最新文章
- SCOPE_IDENTITY()
- Linux中通过Socket文件描述符寻找连接状态介绍
- 【2016年第5期】位置大数据在车辆保险风险管理中的应用
- 测开之路五十:monggodb安装与初步使用
- 51 nod 1006 最长公共子序列Lcs
- wtform 表单示例
- select支持手动输入
- Qt的环境与工具、信号与槽
- 微软应用商店_微软商店那些好用的UWP软件!你不看这篇文章会后悔的!超级实用! | APP杂货店...
- PowerBuilder制作纸牌游戏
- nvme固态硬盘开机慢_固态硬盘速度慢?三步教你开启SSD全速模式!
- Sublime Text 2 代码编辑器使用技巧
- 基于51单片机+DS18B20温度测温器+LCD1602显示
- h5页面 请在微信客户端打开链接_电脑版微信网页授权提示请在微信客户端打开链接?...
- 翼支付在Sharding-Sphere项目工作介绍
- Apache-DBUtils实现CRUD操作
- SLAM 岗位求职与简历书写
- 你的小米手机升级MIUI11后,电池掉电很快?那是这些设置没关掉吧
- Java各种数据类型互转
- QList添加自定义结构体
热门文章
- mysql -h 日志打印_mysql日志
- shell条件判断 if else
- 计算机无法播放asf格式,ASF文件怎么打开播放出来?
- Filter过滤器输出HelloFilter
- FJ的字符串(字符串)
- python将excel文件变成txt文件
- tensorflow基础(2)-tf.argmax和axis
- grid.getSelectionModel的所有操作
- 吴恩达深度学习4.2练习_Convolutional Neural Networks_Happy House Residual Networks
- netty消息分发思路