1. 构造器是类型的成员之一,其他成员比如,成员字段,成员函数。狭义上,构造器指的是实例构造器(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)--构造函数的更多相关文章

  1. 【Java面试题】7 构造器Constructor是否可被override?

    构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload. Constructor不能被继承,所以Constructor也就不能被override.每一个类必 ...

  2. 构造器Constructor是否可被override?

    构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading.

  3. C#.NET常见问题(FAQ)-构造器constructor有什么用

    所谓的构造器constructor,就是声明类的时候定义一个public 类名的方法,这个方法不需要传递任何数据,这样的话在声明任何类的实例的时候都会无条件执行里面的方法   析构器只在程序销毁的时候 ...

  4. 构造器Constructor

    构造器Constructor是否可被override构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading 首先,构造器是不能被继承的,因为每个类 ...

  5. 类的构造器[constructor]_C#

    类的构造器(constructor): 1.       先看两个类定义: class A{ } 相当于: class A: object { Public A ( ) : base( ) {   } ...

  6. 原型prototype、原型链__proto__、构造器constructor

    创建函数时,会有原型prototype,有原型链__proto__,有constructor.(构造函数除外,没有原型) . prototype原型:是对象的一个属性(也是对象),使你有能力向对象添加 ...

  7. js原型和原型链理解 constructor 构造函数

    一.对象:普通对象   函数对象 二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象  2.首字母大写,用于区分普通函数 function Person(name){ ...

  8. Java 构造器Constructor 继承

    Java默认构造方法 构造方法作用:初始化所定义的类的对象和属性. 构造方法没有返回类型. 2 继承中的构造器 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式). 如果父类 ...

  9. java 构造器(constructor)

    有一点很重要,即你要时刻询问子句"如果异常发生了,所有东西能被正确清理码?",尽管大多数情况下时非常安全的,但涉及到构造器时,问题出现了,构造器会把对象设置成安全的初始状态,但还会 ...

  10. 构造器constructor是否可被重写override?

    构造器不能被继承,因此不能被重写,但可以被重载.

随机推荐

  1. git合并同事代码

    git 操作: 如果龙哥提交了代码,我想拉去过来,我需要的操作: 1.git fetch 2. git add . 3.git commit -m '' 提交本地的文件 4.git merge ori ...

  2. java 获取本地 mac 地址

    主要参考:Java获取本机MAC地址/IP地址/主机名 做的更改: 1.我的windows是中文版,程序中获取mac时是按照physical address 获取的,添加上"物理地址&quo ...

  3. 用js脚本实现链接

    使用json实现分页的时候,扩展了一下如何使用JS现实链接,其实很简单,但是之前我没用过... 就以分页的上一页,下一页来举例: <script type="text/javascri ...

  4. C# 中使用RegisterShellHookWindow Hook窗体创建

    前言:最近在写一个桌面程序时需要全局HOOK 窗体的创建,但是在.net中SetWindowsHookEx()只可实现键盘鼠标的全局钩子,其余的全局钩子都需要使用DLL.难道就没有解决办法了么?经过长 ...

  5. leetcode 1278 分割回文串

    time O(n^2*k)  space O(n^2) class Solution { public: int palindromePartition(string s, int K) { //分成 ...

  6. Java编写能完成复数运算的程序

    Java编写能完成复数运算的程序 题目简介: 整体分析: 界面分析: 实验代码: package complex; import java.awt.EventQueue; import javax.s ...

  7. linux之用户,用户组,软件操作

    用户 超级管理员用户 root 0 普通用户 (0-65535) 系统用户:启动系统服务和进程的用户,不可以登陆. (1-999centos7)(1-499centos6) 可登陆用户:能登录系统的用 ...

  8. ansible使用sudo

    方式一. 1.配置资源清单inventory文件 [root@test1 ~]# cat >/etc/ansible/hosts <<EOF [k8s] 192.168.0.92 a ...

  9. 第一个python-ui界面

    首先是安装eric6简直是个灾难,先是找不到汉化版的eric6,好不容易找到了,一打开eric6的窗体就说designer.exe不存在,确实在PyQt5里没有,明明在PyQt5-tools里面有,最 ...

  10. .pkl文件是什么?python

    对于.pkl文件,我是在接触 SMPL模型的时候用到的.SMPL的开源项目包里,有model文件夹,打开有两个.pkl文件.然后,找到了一个说的相对比较详细的网址.https://jingyan.ba ...