构造器(Constructor)--构造函数
- 构造器是类型的成员之一,其他成员比如,成员字段,成员函数。狭义上,构造器指的是实例构造器(instance constructor)
class Student
{
public int ID;
public string Name;
public Student()//不带参的构造器,制造出来就又默认值了
{
this.ID = ;
this.Name = "No name";
}
public Student(int initId,string initName)//带参构造器,需要在创建实例的时候手动写入 {
this.ID = initId;
this.Name = initName;
}
}
static void Main(string[] args)
{
Student stu = new Student(2,"Mr okay");
Student stu2 = new Student();
}
*加构造器的快捷件 ctor+两次tab
2.构造器在内存里是怎样操作的
在stack中是从内存地址由高到低分配的,所以叫栈溢出(stackoverflow)
1,对于不带参的构造函数
先在stack中开辟一个空间用来存放引用变量,然后去heap里面根据成员变量类型,依次开辟空间,数据存为0,然后将其地址复制放在刚刚stack的位置
2.对于带参的构造函数
先在stack中开辟一个空间用来存放引用变量,然后去heap里面根据成员变量类型,依次开辟空间,存放初始化的数据,如果是值类型,就放数据,如果是引用类型,再去另一块heap中开辟地址,把真正的数据放在新开辟的位置,把位数据的地址放在第一次开辟heap的里面,stack里面存放数据开始时候的地址,有点堆中堆的感觉;
构造器(Constructor)--构造函数的更多相关文章
- 【Java面试题】7 构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload. Constructor不能被继承,所以Constructor也就不能被override.每一个类必 ...
- 构造器Constructor是否可被override?
构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading.
- C#.NET常见问题(FAQ)-构造器constructor有什么用
所谓的构造器constructor,就是声明类的时候定义一个public 类名的方法,这个方法不需要传递任何数据,这样的话在声明任何类的实例的时候都会无条件执行里面的方法 析构器只在程序销毁的时候 ...
- 构造器Constructor
构造器Constructor是否可被override构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading 首先,构造器是不能被继承的,因为每个类 ...
- 类的构造器[constructor]_C#
类的构造器(constructor): 1. 先看两个类定义: class A{ } 相当于: class A: object { Public A ( ) : base( ) { } ...
- 原型prototype、原型链__proto__、构造器constructor
创建函数时,会有原型prototype,有原型链__proto__,有constructor.(构造函数除外,没有原型) . prototype原型:是对象的一个属性(也是对象),使你有能力向对象添加 ...
- js原型和原型链理解 constructor 构造函数
一.对象:普通对象 函数对象 二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象 2.首字母大写,用于区分普通函数 function Person(name){ ...
- Java 构造器Constructor 继承
Java默认构造方法 构造方法作用:初始化所定义的类的对象和属性. 构造方法没有返回类型. 2 继承中的构造器 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式). 如果父类 ...
- java 构造器(constructor)
有一点很重要,即你要时刻询问子句"如果异常发生了,所有东西能被正确清理码?",尽管大多数情况下时非常安全的,但涉及到构造器时,问题出现了,构造器会把对象设置成安全的初始状态,但还会 ...
- 构造器constructor是否可被重写override?
构造器不能被继承,因此不能被重写,但可以被重载.
随机推荐
- mysql基础知识语法汇总整理(一)
mysql基础知识语法汇总整理(二) 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...
- LeetCode 48. 旋转图像(Rotate Image)
题目描述 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: ...
- 在jenkins打开roboframework报告:Opening Robot Framework report failed
来源自: https://blog.51cto.com/icestick8586/1884615 --------------------------------------------------- ...
- R语言:读入txt文件中文文本出现乱码解决方案
下载安装 readr 因为使用内置函数 read.table() 读入应该是格式不符合要求会报错 library(readr) help(package="readr") 可以使用 ...
- P4138 [JOISC2014]挂饰
P4138 [JOISC2014]挂饰 ◦ N个装在手机上的挂饰.挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个. ...
- [go]beego获取参数/返回参数
获取前端传来的参数 获取数据并转为对应的类型 - ?id=111&id=122 c.GetInt("id") int,111 - ?id=111&id=122 c. ...
- JAVA VUser
JAVA VUser 一.java虚拟用户协议 java虚拟用户脚本主要有Java Vuser.Corba-Java.RMI-Java.EJB等类型.这些类型的虚拟用户脚本均可以用java语言来手工编 ...
- jenkins凭证与新建任务
一.凭证介绍 有许多第三方网站和应用程序可以与 Jenkins 进行交互,例如程序代码仓库,云存储系统和服务等. 此类应用程序的系统管理员可以在应用程序中配置凭证以专供 Jenkins 使用.通常通过 ...
- gitlab仓库的使用
一.gitlab简介 gitlab是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建web服务. [管理命令] gitlab-ctl stop gitlab- ...
- IntelliJ IDEA 设置护眼背景色
IntelliJ IDEA 设置护眼背景色 1.设置主体和字体 Settings --> Appearance & Behavior --> Appearance Theme: I ...