结构与类的对象在引用上的不同之处

用到List<T>,T为结构时,new 对象,对象每次生成值存入list中,list存入每次生成的值;T为类时,new 对象,对象每次生成值存入list中,list存入的都会变成最近一次生成的值。

也就是说:结构与类,new一个对象时,结构每次引用对象都会生成不同的值,但类的对象每次生成的值都会把前面的值覆盖。

原因:结构对象每次生成的值都会开辟新的内存空间,来存放每次的值,而类对象每次生成的值
都会只在原来new生成的对象内存空间中,内存固定,所以会把原来的值覆盖掉。
即如下面所说:
类:

类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存

类有构造和析构函数

类可以继承和被继承

结构:

结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。

结构没有构造函数,但可以添加。结构没有析构函数

结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口

时间: 2024-08-07 04:09:42

结构与类的对象在引用上的不同之处的相关文章

二维数组 面向对象编程的概念、 类、对象以及引用 和成员方法

1.二维数组(熟悉)1.1 基本概念 一维数组本质上就是一段连续的存储单元,用于存放多个类型相同的数据内容. 二维数组本质上就是由多个一维数组组成的数组,也就是说二维数组中的每个元素都是一维数组,而一维数组的每个元素才是具体数据内容. 1.2 二维数组的声明(1)语法格式 数据类型[][] 数组名称 = new 数据类型[行数][列数];如: int[][] arr = new int[2][5]; - 声明一个具有2行5列元素类型为int的二维数组 其中行下标的范围是:0 ~ 1: 其中列下标

Java 面向对象:类、对象、引用

FighterPlane fp = new FighterPlane() 先产生对象,然后赋予声明 fp new FighterPlane() 根据类模板产生一个对象,并在内存中为此对象开辟一块独立的内存空间. 以类为模板产生对象,实质上就是将类中定义的属性(域变量)复制到对象中,这些属性(域变量)虽然是在类中定义的,但实际上是为对象服务,因而称它们为对象属性. 方法在调用时,系统会为方法开辟一个栈空间,用于存放方法中的形式参数和局部变量. 方法在执行时还能访问复制到对象中的域变量,就如同方法也

Java 类的定义对象和引用

Java的核心思想万物皆对象. 对象是对属性(成员变量, 静态属性)和方法(函数, 动态属性)的封装 定义一个类 public class 类名{ 成员变量 方法 } 类名   变量名 = new  类名(); 变量名. 面向对象更容易达到一种境界: Reusable(重用性), Extensibility(可扩展性) 面向组件(Component)--比对象更高层次的抽象 WebService 成员变量和局部变量的区别 成员变量可以是java中任意一种数据类型(基础数据类型和引用类型) 成员变

java中对象和对象的引用

在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然. 方法/步骤 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词.” 从这一句话就可

我的C++笔记(类与对象)

/* * Main.cpp * * Created on: 2015-7-24 * Author: feiruo */ /* * 类与对象: * * 1.抽象: * 面向对象方法中的抽象,是指对具体问题或对象的概括,抽出一类对象的公共性质并加以描述的过程. * 数据抽象:描述某类对象的属性或状态,也就是此类对象区别于彼类对象的特征: * 行为抽象:描述某类对象的共同行为或功能的特征. * * 2.封装: * 封装就是将抽象得到的数据和行为或功能相结合,形成一个有机的整体,也就是将数据与操作数据的

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通

OC1_类与对象

// // main.m // OC1_类与对象 // // Created by zhangxueming on 15/6/9. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> //面向过程与面向对象 //C语言偏向面向过程 //面向过程强调业务的逻辑 //五子棋 //1.显示棋盘 2.黑子先走 3.判断输赢 4.绘制棋盘 5.白子下棋 6.判断输赢

Python 中的类与对象 初认识

一:类的声明 1类的关键字: 从第一天第一个项目起我们就接触过关键字,比如False True is not None return for while elif else import等等,这是语言中内定的一个语法规则吧,通过关键字告诉电脑下面一个字母或一段 代码是什么,要用来干什么,告诉电脑怎么以哪种规则去用. 而class就是类的关键字,告诉系统我要定义一个类了.让系统用理解类的规则来理解我下面 的一些代码.没有关键字来声明一下,系统就不知道下面的代码是什么. 2.标识符: 标识符就是用来

类与对象的认识

类和对象 c是一门面向过程的语言关注的过程,c++作为一门面向对象的语言关注的时对象,把事情拆分为不同的对象,通过对象的交互来实现. 一.类和对象的初认识 1.类的引入类用关键字class引出,与之前的结构体类似,不同的是结构体内不能定义函数而在类中可以定义函数啦(c++中结构体也可以定义函数哦)2.类的定义类中成员函数的两种定义方式:可以在类中定义定义,但编译器有可能将其当作内联函数来处理故推荐第二种--将函数的声明和定义分开.3.类的访问限定符public.protected.private