精华内容
下载资源
问答
  • 案例分析一:假定CPU的主频是500MHz。硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据量为8KB, 要求没有任何数据传输被错过。如果CPU在DMA初始化设置和启动硬盘操作等方面用了1000个时钟周期...

    案例分析一:假定CPU的主频是500MHz。硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据量为8KB, 要求没有任何数据传输被错过。

    如果CPU在DMA初始化设置和启动硬盘操作等方面用了1000个时钟周期,并且在DMA传送完成后的中断处理需要500个时钟,则在硬盘100%处于工作状态的情况下, CPU用于硬盘I/O操作的时间百分比大约是多少?

    案例分析二:

    请求分页管理系统中,假设某进程的页表内容如下表所示。页号页框(Page Frame)号有效位(存在位)

    0—0

    1906H1

    2—0

    3235H1

    4—0

    页面大小为4KB,一次内存的访问时间是200ns,一次快表(TLB)的访问时间是2ns,处理一次缺页的平均时间为107ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。

    假设①TLB初始为空;②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列31A2H、24C2H、36B4H,

    请问:

    (1) 依次访问上述三个虚地址,各需多少时间?给出计算过程。

    (2)基于上述访问序列,虚地址24C2H的物理地址是多少?请说明理由。

    展开全文
  • 正确答案: A 你的答案: A (正确) 构造函数不可以是私有的(private) 一个类中可以有多个构造函数 无论何时,只要类的对象被创建,就会执行构造函数 构造函数没有返回类型 ...

    正确答案: A 你的答案: A (正确)

    构造函数不可以是私有的(private)
    一个类中可以有多个构造函数
    无论何时,只要类的对象被创建,就会执行构造函数
    构造函数没有返回类型

    展开全文
  • A:构造函数没有返回值,也不能用void修饰。如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。C:super(参数):调用父类中的某一个构造...

    A:构造函数没有返回值,也不能用void修饰。如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误。

    C:super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。 this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

    D:可以调用。

    class Person {

    public static void prt(String s) {

    System.out.println(s);

    }

    // 父类·无参数构造方法: A Person.

    Person() { //构造方法(1)

    prt("父类·无参数构造方法: "+"A Person.");

    }

    // 父类·含一个参数的构造方法: A person's name is codersai

    Person(String name) { //构造方法(2)

    prt("父类·含一个参数的构造方法: "+"A person's name is " + name);

    }

    }

    public class Chinese extends Person {

    Chinese() {

    super(); // 调用父类构造方法(1)

    // 子类·调用父类“无参数构造方法”: A chinese coder.

    prt("子类·调用父类”无参数构造方法“: "+"A chinese coder.");

    }

    // 子类·调用父类”含一个参数的构造方法“: his name is codersai

    Chinese(String name) {

    super(name);// 调用父类具有相同形参的构造方法(2)

    prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name);

    }

    // 子类:调用子类具有相同形参的构造方法:his age is 18

    Chinese(String name, int age) {

    this(name);// 调用具有相同形参的构造方法(3)

    prt("子类:调用子类具有相同形参的构造方法:his age is " + age);

    }

    public static void main(String[] args) {

    Chinese cn = new Chinese();

    cn = new Chinese("codersai");

    cn = new Chinese("codersai", 18);

    }

    }

    展开全文
  • JavaScript 中的构造函数

    千次阅读 多人点赞 2018-11-10 20:08:26
    但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)。 以下的内容会分为如下细节: 1.对象的概念 2.构造函数 3.new 命令  3.1:基本原理  3.2:...

     

    典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类”的实例。但是,在JavaScript语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)。

    以下的内容会分为如下细节:

    1.对象的概念

    2.构造函数

    3.new 命令

      3.1:基本原理

      3.2:基本用法

    1.对象的概念

      “面向对象编程”(Object Oriented Programming,缩写为OOP)是目前主流的编程范式。它的核心思想是将真实世界中各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

      在Javascript的重要数据类型-对象这篇文章中,提到了js中对象的一些基本知识,比如说对象的创建,对象的引用,对象的属性等等。如果没有掌握对象的基础知识,请移步Javascript的重要数据类型-对象

      在有了对象的基础知识之后,对js中对象做一个简单的总结。如下:

      a:对象是单个实物的抽象。

      b:对象是一个容器,封装了‘属性’和‘方法’。

      一本书、一辆汽车、一个人都可以是“对象”。当实物被抽象成“对象”,实物之间的关系就变成了“对象”之间的关系,从而就可以模拟现实情况,针对“对象”进行编程。

      所谓属性,就是对象的一种状态;所谓方法,就是对象的一种行为。

      比如说,可以把动物抽象为animal对象,属性记录的就是哪一种动物,以及该动物的大小和颜色等。方法表示该动物的某种行为(奔跑,猎食,交配,休息等等)。

    2.构造函数

      ‘面向对象编程’的第一步,就是要生成对象。而js中面向对象编程是基于构造函数(constructor)和原型链(prototype)的。

      前面说过,“对象”是单个实物的抽象。通常需要一个模板,表示某一类实物的共同特征,然后“对象”根据这个模板生成。

      js语言中使用构造函数(constructor)作为对象的模板。所谓构造函数,就是提供一个生成对象的模板,并描述对象的基本结构的函数。一个构造函数,可以生成多个对象,每个对象都有相同的结构。

      看一下构造函数的基本结构。

    1     var Keith = function() {
    2         this.height = 180;
    3     };
    4     //两种写法相同。
    5     function Keith() {
    6         this.height = 180;
    7     }

      上面代码中,Keith就是构造函数,它提供模板,用来生成对象实例。为了与普通函数区别,构造函数名字的第一个字母通常大写。

      构造函数的三大特点:

      a:构造函数的函数名的第一个字母通常大写。

      b:函数体内使用this关键字,代表所要生成的对象实例。

      c:生成对象的时候,必须使用new命令来调用构造函数。

    3.new 命令

      3.1:基本原理

      new命令的作用,就是执行一个构造函数,并且返回一个对象实例。使用new命令时,它后面的函数调用就不是正常的调用,而是依次执行下面的步骤。

      a:创建一个空对象,作为将要返回的对象实例。

      b:将空对象的原型指向了构造函数的prototype属性。

      c:将空对象赋值给构造函数内部的this关键字。

      d:开始执行构造函数内部的代码。

      也就是说,构造函数内部,this指向的是一个新生成的空对象,所有针对this的操作,都会发生在这个空对象上。构造函数之所谓构造函数,意思是这个函数的目的就是操作一个空对象(即this对象),将其构造为需要的样子。

      以上是new命令的基本原理,这个很重要。以下会用具体实例来验证该原理的过程。

      3.2:基本用法

      new命令的作用,就是调用一个构造函数,并且返回一个对象实例。

    1     function Keith() {
    2         this.height = 180;
    3     }
    4 
    5     var boy = new Keith();
    6     console.log(boy.height);  //180

      上面代码中通过new命令,让构造函数Keith生成一个对象实例,并赋值给全局变量boy。这个新生成的对象实例,从构造函数Keith中继承了height属性。也就说明了这个对象实例是没有height属性的。在new命令执行时,就代表了新生成的对象实例boy。this.height表示对象实例有一个height属性,它的值是180。

      使用new命令时,根据需要,构造函数也可以接受参数。

     1     function Person(name, height) {
     2         this.name = name;
     3         this.height = height;
     4     }
     5 
     6     var boy = new Person('Keith', 180);
     7     console.log(boy.name); //'Keith'
     8     console.log(boy.height); //180
     9 
    10     var girl = new Person('Samsara', 160);
    11     console.log(girl.name); //'Samsara'
    12     console.log(girl.height); //160

      用以上的一个例子,来对构造函数的特点和new基本原理进行一个梳理。

      上面代码中,首先,我们创建了一个构造函数Person,传入了两个参数name和height。构造函数Person内部使用了this关键字来指向将要生成的对象实例。

      然后,我们使用new命令来创建了两个对象实例boy和girl。

      当我们使用new来调用构造函数时,new命令会创建一个空对象boy,作为将要返回的实例对象。接着,这个空对象的原型会指向构造函数Person的prototype属性。也就是boy.prototype===Person.prototype的。要注意的是空对象指向构造函数Person的prototype属性,而不是指向构造函数本身。然后,我们将这个空对象赋值给构造函数内部的this关键字。也就是说,让构造函数内部的this关键字指向一个对象实例。最后,开始执行构造函数内部代码。

      因为对象实例boy和girl是没有name和height属性的,所以对象实例中的两个属性都是继承自构造函数Person中的。这也就说明了构造函数是生成对象的函数,是给对象提供模板的函数。

      一个问题,如果我们忘记使用new命令来调用构造函数,直接调用构造函数了,会发生什么?

      这种情况下,构造函数就变成了普通函数,并不会生成实例对象。而且由于后面会说到的原因,this这时代表全局对象,将造成一些意想不到的结果。

    1     function Keith() {
    2         this.height = 180;
    3     }
    4 
    5     var person = Keith();
    6     console.log(person.height); //TypeError: person is undefined
    7     console.log(window.height); //180

      上面代码中,当在调用构造函数Keith时,忘记加上new命令。结果是this指向了全局作用域,height也就变成了全局变量。而变量person变成了undefined。

      因此,应该非常小心,避免出现不使用new命令、直接调用构造函数的情况。

      为了保证构造函数必须与new命令一起使用,一个解决办法是,在构造函数内部使用严格模式,即第一行加上use strict

    1     function Person(name, height) {
    2         'use strict';
    3         this.name = name;
    4         this.height = height;
    5     }
    6     var boy = Person();
    7     console.log(boy) //TypeError: name is undefined

      上面代码的Person为构造函数,use strict命令保证了该函数在严格模式下运行。由于在严格模式中,函数内部的this不能指向全局对象。如果指向了全局,this默认等于undefined,导致不加new调用会报错(JavaScript不允许对undefined添加属性)。

      另一个解决办法,是在构造函数内部判断是否使用new命令,如果发现没有使用,则直接返回一个实例对象。

    1     function Person(name, height) {
    2     if (!(this instanceof Person)) {
    3             return new Person(name, height);
    4         }
    5         this.name = name;
    6         this.height = height;
    7     }
    8     var boy = Person('Keith');
    9     console.log(boy.name) //'Keith'

      上面代码中的构造函数,不管加不加new命令,都会得到同样的结果。

      如果构造函数内部有return语句,而且return后面跟着一个复杂数据类型(对象,数组等),new命令会返回return语句指定的对象;如果return语句后面跟着一个简单数据类型(字符串,布尔值,数字等),则会忽略return语句,返回this对象。

     1     function Keith() {
     2         this.height = 180;
     3         return {
     4             height: 200
     5         };
     6     }
     7     var boy = new Keith();
     8     console.log(boy.height); //200
     9 
    10     function Keith() {
    11         this.height = 100;
    12         return 200;
    13     }
    14     var boy = new Keith();
    15     console.log(boy.height); //100

      另一方面,如果对普通函数(内部没有this关键字的函数)使用new命令,则会返回一个空对象。

    1     function Keith() {
    2         return 'this is a message';
    3     }
    4     var boy = new Keith();
    5     console.log(boy); // Keith {}

      上面代码中,对普通函数Keith使用new命令,会创建一个空对象。这是因为new命令总是返回一个对象,要么是实例对象,要么是return语句指定的对象或数组。本例中,return语句返回的是字符串,所以new命令就忽略了该语句。

    完。

    转载掘金:https://juejin.im/entry/584a1c98ac502e006c5d63b8

    转载请注明出处:www.cnblogs.com/Uncle-Keith…

    展开全文
  • 拷贝构造函数详解

    千次阅读 2021-02-02 15:04:44
    拷贝构造函数构造函数的一种, 也称复制构造函数, 只有一个参数, 参数类型是该类的引用. [拷贝构造函数的参数可以是 const 引用,也可以是非 const 引用。 一般使用前者,这样既能以常量对象(初始化后值不能...
  • 如何写出一个合理的构造函数,因为构造函数内部可能会有内存分配错误等问题。我所知的有两种处理方法。  1.在构造函数里抛出异常。  2.两段式的构造函数,就是说有一个init()的函数,专门负责内存分配等复杂的...
  • 【C++】C++类和对象、构造函数和析构函数

    千次阅读 多人点赞 2018-06-03 20:32:37
    类是对某一事物的抽象描述,具体地讲,类是C++中的一种构造的数据类型。它即可包含描述事物的数据,又可包含处理这些数据的函数,类在程序运行时是被用作样板来建立对象的。所以要建立对象,首先必须定义类。 定义...
  • Qt构造函数的初始化问题

    千次阅读 2020-08-10 15:32:06
    QT中用父类构造函数初始化子类的成员变量 Qt ------ 初始化构造函数参数,parent C++ 构造函数和析构函数是否可以继承? 描述 在Qt新建继承Qt类的类后,经常会在构造函数看到parent的参数的初始化。如: ...
  • 默认构造函数详解

    万次阅读 2018-05-10 11:20:26
    错误认识1:若程序员没有自己定义无参数的构造函数,那么编译器会自动生成默认...正确认识:默认的构造函数分为有用的和无用的,所谓无用的默认构造函数就是一个空函数、什么操作也不做,而有用的默认构造函数是可以...
  • 子类继承父类—构造函数用法详解

    千次阅读 2017-11-23 17:40:19
    java继承中对构造函数是不继承的,只是调用(隐式或显式)。 1.例子程序: public class FatherClass { public FatherClass() { System.out.println(100); } public FatherClass(int age) { System.out....
  • 构造函数 —— 学生信息类

    千次阅读 2020-10-26 12:41:17
    构造函数 —— 学生信息类 一、任务描述 本关任务:设计一个带有构造函数和析构函数的学生类。 二、相关知识 构造函数、析构函数与赋值函数是每个类最基本的函数。他们太普通以致让人容易麻痹大意,其实这些貌似简单...
  • 复制构造函数与拷贝构造函数

    千次阅读 2014-09-16 11:39:03
    对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。  为了说明复制构造函数作用,我先说
  • 下列有关静态成员函数描述中,正确的是: A、静态数据成员可以在类体内初始化 B、静态数据成员不可以被类对象调用 C、静态数据成员不受private控制符作用 D、静态数据成员可以直接用类名调用答案:DA,静态...
  • 构造函数

    千次阅读 2021-01-28 16:49:43
    构造函数的作用以及写法:https://www.bilibili.com/video/BV1jJ41127dx/?spm_id_from=trigger_reload 构造函数的调用:https://www.bilibili.com/video/BV1jJ41127RB/?spm_id_from=trigger_reload ...//构造函数:类
  • C++ 类的构造函数和析构函数

    千次阅读 2020-06-14 10:06:34
    C 构造函数 D 析构函数 2-2类的析构函数的作用是 D A 一般成员函数的初始化 B 类的初始化 C 对象的初始化 D 删除类创建的对象 2-3下列函数中,( C )不能重载。 A 成员函数 B 非成员函数 C 析构函数 D 构造函数 2-4...
  • c++构造函数,虚函数相关问题

    千次阅读 2019-05-03 14:33:05
    1.c++中内存分布的特点: 全局区(静态区):全局变量,static修饰的...代码区:static修饰的成员函数,一般的成员函数,代码,编译时期已经确定 一般的成员变量和虚函数指针一般是分配在堆或栈中。 一般const...
  • 虚基类的构造函数在非虚基类之前调用(最终继承类构造函数中,成员初始化列表同时出现对虚基类和非虚基类构造函数的调用时,虚基类的构造函数先于非虚基类的构造函数执行) 带有纯虚函数的类不能直接实例化 子类实现...
  • 基类的构造函数——>派生类的构造函数; 当撤消派生类对象时: 派生类的析构函数——>基类的析构函数。 1.派生类的构造函数和析构函数的调用顺序 (1) 输出的是:基类的构造函数 基类的构造函数 ...
  • c++什么时候会生成默认构造函数

    千次阅读 2016-11-22 20:36:17
    C++对象可以使用两种方式进行创建:构造函数和复制构造函数。假如我们定义了类A,并使用它创建对象。 代码如下: A a,b; A c=a; A d(b); 对象a和b使用编译器提供的默认构造函数A::A()创建出来,我们称...
  • 构造函数不能是虚函数

    千次阅读 2010-09-16 22:23:00
    http://blog.csdn.net/woyaowenzi/archive/2008/04/21/2310710.aspx<br />  最近有人问...问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎
  • Swift 基本知识之十三 构造函数

    千次阅读 2016-01-29 17:09:46
    通过闭包或函数设置属性的默认值 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置实例中每个存储型属性的初始值和执行其他必须的设置或初始化工作。...
  • 构造函数 析构函数 2-2 类的析构函数的作用是 一般成员函数的初始化 类的初始化 对象的初始化 删除类创建的对象 2-3 下列函数中,( )不能重载。 成员函数 非成员函数 析构函数 构造函数 2-4 下列关于类和对象的...
  • 何时调用构造函数

    千次阅读 2016-08-30 17:18:24
    在使用x、y坐标时,将两个矢童相加将非常简单,只要将两...根据这种描述,可能使用下面的代码: Vector Vector::operator+(const Vector & b)const { vector sum; sum.x=x+b.x; sum.y=y+b.y; return sum;
  • 这里我们主要讨论构造函数、析构函数、普通成员函数、虚函数,对这几种函数说说自己的理解。 对构造函数的总结 对构造函数,我们先来看看如下的代码 #include using namespace std; class Base{ public: ...
  • 简单回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么,假如我们让原型对象等于另一个类型的实例,结果会...
  • 问题描述 有时间我们想在窗口初始化的时候获取某个控件的大小,根据这个大小来进行一些操作,但是在我们的窗口应用了...窗口构造结束之后,会执行 resizeEvent 事件函数,此时可在这个函数中获取到正确的大小。 ...
  • 拷贝构造函数

    千次阅读 2013-03-22 16:24:50
    拷贝构造函数作用及用途?什么时候需要自定义拷贝构造函数? 也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数...
  • 什么情况下要有拷贝构造函数

    千次阅读 2014-11-05 16:39:48
    拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用...
  • C++笔试中你不知道的考察点!!内存分配与复制构造函数
  • 深入理解js构造函数

    千次阅读 2018-05-24 16:38:14
    new表达式是配合构造函数使用的,例如new String(“a string”),调用内置的String函数构造了一个字符串对象。下面我们用构造函数的方式来重新创建一个实现同样功能的对象,首先是定义构造函数,然后是调用new表达式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,669
精华内容 75,067
关键字:

关于构造函数的描述正确的是