• 构造器(Constructor)--构造函数


    1. 构造器是类型的成员之一,其他成员比如,成员字段,成员函数。狭义上,构造器指的是实例构造器(instance constructor)
    class Student
        {
            public int ID;
            public string Name;
            public Student()//不带参的构造器,制造出来就又默认值了
            {
                this.ID = 1;
                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里面存放数据开始时候的地址,有点堆中堆的感觉;

  • 相关阅读:
    学习工具
    Qt 之 QApplication
    Qt中常用的类
    关于在Qt里让程序休眠一段时间的方法总结
    Qt setWindow setViewPort
    ajax回调数据 Structs has detected an unhandled exception 问题
    Struts2配置拦截器自定义栈时抛异常:Unable to load configuration.
    es6之map解构数组去重
    ES6之对象的方法
    ES6之genorator和yield使用(迭代器)
  • 原文地址:https://www.cnblogs.com/1521681359qqcom/p/11192202.html
Copyright © 2020-2023  润新知