精华内容
下载资源
问答
  • 创建对象时自动执行构造函数
    千次阅读
    2021-01-25 11:05:10

    构造函数

    和类名同名,没有返回类型,如果类中没有创建构造函数,会缺省的创建一个构造函数,例如一个名为Main的类其缺省的构造函数为

    public class Main {
    	//缺省构造函数
    	public Main() 
    	{
    		
    	}
    }
    

    如果类中有成员变量并对成员变量有初始化操作,那么创建构造函数时会先调用构造函数,然后按顺序对成员变量赋值,例如如下代码创建Main对象时
    会首先跳到public Main()那一行,然后跳转到 int price = 80;然后按顺序执行后面的成员变量赋值语句,最后回到构造函数,将total赋值为零。最终,total的值为零

        public class Main {
        int price = 80;
        int balance = f();
    	int total = 90;
    	public Main() 
    	{
    		total = 0;
    	}
    	int f() 
    	{
    		return 10;
    	}
    	public static void main(String[] args) {
    		Main main = new Main();
    	}
    }
    
    更多相关内容
  • 创建派生类对象构造函数执行顺序

    万次阅读 多人点赞 2019-04-24 22:04:10
    创建派生类对象构造函数执行顺序() 正确答案: A A 基类构造函数,派生类对象成员构造函数,派生类本身的构造函数 B 派生类本身的构造函数,基类构造函数对象成员构造函数 C 基类构造函数,派生类...

    在创建派生类对象,构造函数的执行顺序()
    正确答案: A

    • A 基类构造函数,派生类对象成员构造函数,派生类本身的构造函数

    • B 派生类本身的构造函数,基类构造函数,对象成员构造函数

    • C 基类构造函数,派生类本身的构造函数,派生类对象成员构造函数

    • D 对象成员构造函数,基类构造函数,派生类本身的构造函数

    对象创建时代码的加载顺序为:静态代码 --> 非静态代码 --> 构造方法。

    若继承了父类,则加载顺序为:父类的静态的代码 --> 子类的静态的代码 --> 父类内部非静态代码 --> 父类的构造方法 --> 子类的非静态代码 --> 子类的构造方法。

    其中,静态代码包括(静态方法,静态变量,静态代码块等),非静态代码即(成员方法,成员变量,成员代码块等),同一种代码,写在上面的先加载

    
    public class ExtendsTest {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		C c = new D();
    	}
    
    }
    
    class C {
    	static {
    		System.out.println("C 基类静态域 ");
    	}
    	{
    		System.out.println("C 基类对象成员构造函数");
    	}
    
    	public C() {
    		System.out.println("C 基类本身的构造函数");
    	}
    }
    
    class D extends C {
    	static {
    		System.out.println("D 派生类静态域");
    	}
    	{
    		System.out.println("D 派生类对象成员构造函数");
    	}
    
    	public D() {
    		System.out.println("D 派生类本身的构造函数");
    	}
    }
    
    

    在这里插入图片描述

    展开全文
  • (来源...那么,既然是面象对象的,如何来创建对象呢?一、通过”字面量“方式创建。方法:将成员信息写到{}中,并赋值给一个变量,此时这个变量就是一个对象。例如:var person = (name:'...

    (来源http://www.cnblogs.com/dongjc/p/5179561.html)

    javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象。那么,既然是面象对象的,如何来创建对象呢?

    一、通过”字面量“方式创建。

    方法:将成员信息写到{}中,并赋值给一个变量,此时这个变量就是一个对象。

    例如:

    var person = (name:'dongjc', work:function() {console.log('write coding')});

    如果{}中为空,则将创建一个空对象:

    var person = {} //创建空对象

    演示代码:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2 var person = {

    3 name: "dongjc",

    4 age: 32,

    5 Introduce: function () { alert("My name is " + this.name + ".I'm " + this.age); }

    6 };

    7 person.Introduce();

    8

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    我们还可以给对象丰富成员信息。对象.成员名称 = 值;对象[成员名称] = 值;也可以获取对象的成员信息。对象.成员名称;对象[成员名称];

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2 var person = {

    3 name: "dongjc",

    4 age: 32,

    5 Introduce: function () { alert("My name is " + this.name + ".I'm " + this.age); }

    6 };

    7 person.worker = 'coding'; //丰富成员信息

    8

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    二、通过”构造函数“方式创建。

    方法:

    var obj = new 函数名();

    这与通过类创建对象有本质的区别。通过该方法创建对象时,会自动执行该函数。这点类似于php通过创建对像时,会自动调用构造函数,因此该方法称为通过"构造函数“方式创建对象。

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2 function Person() {

    3 this.name = "dongjc"; //通过this关键字设置默认成员

    4 var worker = 'coding'; //没有this关键字,对象创建后,该变量为非成员

    5 this.age = 32;

    6 this.Introduce = function () {

    7 alert("My name is " + this.name + ".I'm " + this.age);

    8 };

    9 alert("My name is " + this.name + ".I'm " + this.age);

    10 };

    11 var person = new Person();

    12 person.Introduce();

    13

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    此代码一共会两次跳出对话框,原因在于创建对象是自动执行了该函数。

    注意:this关键字的使用。这里的this与php中话法意思类似,指调用该函数的对象,这里指的是person。

    三、通过object方式创建。

    方法:先通过object构造器new一个对象,再往里丰富成员信息。

    var obj = new Object();

    实例代码:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1

    2 var person = new Object();

    3 person.name = "dongjc";

    4 person.age = 32;

    5 person.Introduce = function () {

    6 alert("My name is " + this.name + ".I'm " + this.age);

    7 };

    8 person.Introduce();

    9

    展开全文
  • 在调用构造函数时先调用基类的构造函数,在调用对象成员的构造函数,最后在调用派生类本省的构造函数。 例: 在这里插入代码片 #include <iostream > using namespace std; class B1 { public: B1() { ...

    在创建派生类对象时,构造函数的执行顺序是:
    在调用构造函数时先调用基类的构造函数,在调用对象成员的构造函数,最后在调用派生类本省的构造函数。
    例:

    #include <iostream >
    using namespace std;
    class B1
    {
    public:
     	B1() 
    	{ 
    		cout << "Construct B1"<<endl; 
    	} 
     	~B1() 
    	{ 
    		cout<< "Destruct B1" << endl; 
    	}
    };
    class B2
    {
    public:
    	B2() 
    	{ 
    		cout << "Construct B2" << endl; 
    	}
     	~B2() 
    	{ 
    		cout << "Destruct B2 " << endl; 
    	}
    };
    class D : public B2, public B1
    {
    public:
    	D() : B2( ), B1( ) 
    	{ 
    		cout << "Construct D" << endl; 
    	}
      ~D() 
    	{
    	 	cout << "Destruct D" <<endl; 
    	}
     private:
       B2  b2;
       B1  b1;
    };
    int main()
    {
     	D d;
    	return 0;  
    }
    
    

    在这里插入图片描述

    展开全文
  • 创建派生类对象构造函数执行顺序(A) A.基类构造函数,派生类对象成员构造函数,派生类本身的构造函数 B.派生类本身的构造函数,基类构造函数对象成员构造函数 C.基类构造函数,派生类本身的构造函数,派生...
  • 构造函数:主要作用在创建对象时为 对象成员属性赋值,构造函数由系统自动调用,无需手动调用 析构函数:主要作用在对象销毁前系统自动调用,执行一些清理工作。 构造函数语法 类名(){} 1、构造函数,没有返回值,...
  • #include "stdafx.h" ...// 没有显示声明构造函数,编译器会调用默认的构造函数 class Test1 { public: int i; string str; }; // 显示声明了构造函数 class Test2 { public: Test2(); Test2(int i, st
  • 本文主要对javascript工厂模式和构造函数模式创建对象方法进行解析,具有一定的参考价值,下面跟着小编一起来看下吧
  • 2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 3.创建一个对象时,系统自动调用构造函数 析构函数 1.析构函数没有参数,也没有返回值。不能重载,也...
  • ECMAScript中的构造函数可以用来创建特定类型的对象,如Object和Array这样的原生构造函数,在运行时自动出现在执行环境中,此外也可以创建自定义的构造函数,从而创建自定义对象类型的属性和方法
  • java不通过构造函数创建对象(Unsafe)

    万次阅读 多人点赞 2020-05-31 17:02:16
    java中不通过构造函数创建对象(也有说不创建对象直接执行成员方法) 这里就不和你们扯什么通过 反序列化、clone等方法了 个人觉得都是在胡扯。 如何不执行构造函数创建对象? 先来带大家认识一个类 sun.misc.Unsafe...
  • 构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用。一个类可以有多个构造函数,根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。  2...
  • #include <iostream> using namespace std; class Line { public: void setLength( double len ); double getLength( void ); Line(int i); // 这是构造函数声明 ~Line(); // 这是析构函数...
  • 【C++】构造函数 利用构造函数对类对象进行初始化

    千次阅读 多人点赞 2022-01-25 16:01:26
    有关构造函数与析构函数的知识点
  • C++ 构造函数对象指针

    千次阅读 2022-04-07 20:22:50
    内含知识点包括: 构造函数 对象指针 公用对象的保护(const) 食用愉快~
  • 问题:如下两条语句的区别是什么? Student a; Student b(); 假设有一个Student类: class Student { private: int age;... // 不带参数的构造函数 Student() { this->age = 7; } //...
  •  –调用构造函数的主要目的是初始化对象 •一个对象创建过程:  –分配内存空间  –初始化成员变量,如果成员是对象,构造他  –调用构造函数 •默认的空参构造函数 构造函数的使用 •构造函数重载
  • 类的数据成员不能在类定义初始化...如果一个类中所有的数据成员都是公用的public,则可以在定义对象时对数据成员进行初始化。 class studet { public: int num; char name[15]; float score; }stu1 = { 200101
  • JavaScript——对象构造函数

    千次阅读 2019-03-01 18:23:22
    使用对象字面量创建对象 ...使用对象字面量创建对象时,逐个地指定其属性: var car = { make:"habo", model:"cow", year:2019, color:"blue", started:fal...
  • 本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数、什么情况下调用赋值运算符。最后,简单的分析了下深拷贝和浅拷贝的问题。有需要的朋友可以看下
  • C++中如果声明一个对象指针没有分配内存,那么不会调用构造函数 一个指针在内存中也是有内存空间的。 在现在大多数机器上指针都是32位的,也就是4个字节。 如果你声明指针。例如,假设A是一个类 A *pa; 这内存中会...
  • 新手踩坑,python构造函数创建对象时,没有自动执行,object has no attribute 刚开始学python,照着书敲,就离谱,一直在报错object has no attribute,后来发现:在创建对象后,构造函数没有执行。 构造函数为...
  • 1、c++提供了构造函数来处理对象的初始化,他是一种特殊的成员函数,不需要用户来调用,而是在建立对象时自动执行。2、有时候我们希望不同的对象需要赋予不同的值,这是需要使用带参数的构造函数。函数首部的一般...
  • 在C++中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对象创建出一个新的对象。从本质上讲,对象也是一份数据,因为它会占用内存。 严格来说,对象创建包括两个阶段..
  •  如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。  构造原则如下:  1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。 ...
  • 构造函数(方法)是对象创建完成后第一个被对象自动调用的方法。它存在于每个声明的类中,是一个特殊的成员方法。作用是执行一些初始化的任务。Php中使用__construct()声明构造方法,并且只能声明一个。 析构函数...
  • 此部分提取自 C++ Primer 基础部分学习笔记 默认构造函数: 通常无参数或所有的参数都有缺省值, 并且一个类中只能有...当创建对象时不提供参数将调用默认构造函数 重载构造函数: 最为常见的构造函数, 根据不同类...
  • 类的定义 类的定义分为两个部分:数据...class内部可以拥有的是数据成员(属性)和成员函数(行为),他们可以分别用三个不同的关键字进行修饰,public、protected、private. 其中public进行修饰的成员表示的是该类可以
  • 用于用一个对象初始化另一个对象的时候,本质上它也是一个构造函数,写法也和构造函数一样不同的是它用于用对象初始化。这里讨论拷贝构造函数,注意和下文中两个参数的构造函数的区别。 对象初始化和赋值 观察如下两...
  • 构造函数:专门用于构造新对象、将值赋给它们的数据成员。 由于Stock对象提供3个值,因此应为构造函数提供3个参数。 Stock(const string &co, long n = 0, double pr = 0.0) 第一个参数:指向字符串的指针,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,066
精华内容 168,826
关键字:

创建对象时自动执行构造函数