精华内容
下载资源
问答
  • 当新对象被创建时候,构造函数会被调用。每一个类都有构造函数。...Java不支持像C++那样的复制构造函数,这个不同点因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。 Ja...

    当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序中没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数

    Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

    Java不支持像C++那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

    Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

    方法覆盖是说子类重新实现父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。

    方法重载发生在同一个类里面,两个或者是多个方法的方法名相同但是参数列表不同。

     

     

     

    转载于:https://www.cnblogs.com/lingqin/p/10272902.html

    展开全文
  • 什么是复制构造函数

    千次阅读 2016-03-14 13:58:06
    复制构造函数又称为拷贝构造函数一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。...在c++中,有3中对象需要复制的情况。这时,复制构造函数将会被调用,具体如下。 一个对象以
    复制构造函数又称为拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。它存在唯一一个参数是不可变的。这个函数经常在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。一般它使用常量方式调用,另外,它也可以用非常量方式调用。
    在c++中,有3中对象需要复制的情况。这时,复制构造函数将会被调用,具体如下。
    一个对象以值传递的方式传入函数体。
    一个对象以值传递的方式从函数返回。
    一个对象需要通过另外一个对象进行初始化。如果在前两种情况下不使用复制构造函数的时候,就会导致一个指针指向已经被删除的内存空间。
    对于这3种情况来说,初始化和复制的不同含义是构造函数调用的原因。事实上,复制构造函数是由普通构造函数和赋值操作符共同实现的。复制构造函数的示例代码如下:
    #include <iostream>
    using namespace std;
    class A
    {
    public:
        A(int ix, int iy)
        {
            x = ix;
            y = iy;
            cout << "构造函数调用" << endl;
        }
        A()
        {
            cout << "无参构造函数调用" << endl;
        }
        A(A& a)
        {
            x = a.x;
            y = a.y;
            cout << "复制构造函数调用" << endl;
        }
    protected:
    private:
        int x;
        int y;
    };
    int main()
    {
        A a(2, 3);
        A b(4, 5);
        a = b;
        A c = b;//调用复制构造函数
        cout << "b地址=" << &b << endl;
        cout << "c地址=" << &c << endl;
        A aa;
        aa = A(3, 4);
        A a2 = A(a);//调用复制构造函数

        system("pause");
        return 0;
    }
    有3种情况会使用复制构造函数:
    一个对象以值传递的方式传入函数体。
    一个对象以值传递的方式从函数返回。
    一个对象需要通过另外一个对象进行初始化。
    展开全文
  • 一种特殊构造函数,在生成一个实例时候,一般会同时生成一个默认的复制构造函数复制构造函数完成一些基于同一类其他对象构建及初始化工作。 拷贝构造函数的特点 该函数名与类名同名,因为它也一种...
    • 复制构造函数

    是一种特殊的构造函数,在生成一个实例的时候,一般会同时生成一个默认的复制构造函数,复制构造函数完成一些基于同一类的其他对象的构建及初始化工作。

    • 拷贝构造函数的特点
    1. 该函数名与类名同名,因为它也是一种构造函数,并且该函数不指定返回类型
    2. 该函数只有 一个参数,并且是对某个对象的引用
    3. 每个类都必须有一个复制构造函数
    4. 如果程序员没有显式地定义一个复制构造函数,那么,C++编译器会自动生产一个缺省的拷贝构造函数
    5. 复制构造函数的目的是建立一个新的对象实体,所以一定要保证新创建的对象有独立的内存空间,而不是与先前的对象共用
    • 赋值操作符

    用已存在的对象来创建另一个对象,给对象赋予一个新的值,由于赋予的是新值,反过来说,该对象原来就有值,所以赋值函数只能被已经存在了的对象调用,而不能凭空产生。

    • 复制构造函数与赋值运算符的不同
    1. 复制构造函数生成新的类对象,而赋值运算符不能
    2. 由于复制构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检验源对象是否和新建对象相同。而赋值运算符则需要这个操作,另外赋值运算中如果原来的对象中有内存分配,要先把内存释放掉。
    3. 当类中有指针类型的成员变量时,一定要重写复制构造函数和复制构造函数,不能使用默认的。
    展开全文
  • 构造函数和复制函数java 在开放源代码,跨平台编程中,Java是... 关于Java最常见问题之一是与构造函数有关 :它们是什么,它们用途是什么? 简而言之:构造函数是在Java中创建新对象时执行动作。 当Java应用...

    构造函数和复制函数java

    在开放源代码,跨平台编程中,Java是(无可争议的)重量级人物。 尽管有许多很棒的 跨平台 框架 ,但很少有像Java这样统一和直接的框架

    当然,Java还是一种非常复杂的语言,具有自己的微妙之处和约定。 关于Java的最常见问题之一是与构造函数有关 :它们是什么,它们的用途是什么?

    简而言之:构造函数是在Java中创建新对象时执行的动作。 当Java应用程序创建您编写的类的实例时,它将检查构造函数。 如果存在构造函数,则Java在创建实例时在构造函数中运行代码。 很多技术术语都塞进了几句话,但是当您实际使用它时,它会变得更加清晰,因此请确保已安装Java并准备进行演示。

    没有建设者的生活

    如果您正在编写Java代码,即使您可能不知道它,也已经在使用构造函数。 Java中的所有类都有一个构造函数,因为即使您尚未创建一个构造函数,Java也会在编译代码时为您完成。 但是,为了演示起见,请忽略Java提供的隐藏构造函数(因为默认构造函数不会添加任何额外的功能),并在没有显式构造函数的情况下进行观察。

    假设您要编写一个简单的Java掷骰子应用程序,因为您想为游戏生成一个伪随机数。

    首先,您可以创建骰子类来表示物理骰子。 知道自己玩过很多龙与地下城后 ,您决定制作20面骰子。 在此示例代码中,可变骰子是整数20,代表最大可能的掷骰(20面骰子的掷骰不能超过20)。 可变滚动是最终将是随机数的占位符,而rand是随机种子。

    import java.util.Random ;

    public class DiceRoller {
      private int dice = 20 ;
      private int roll ;
      private Random rand = new Random ( ) ;

    接下来,在DiceRoller类中创建一个函数,以执行计算机模拟模头滚动所必须采取的步骤:从rand中取一个整数并将其分配给roll变量,加1以说明Java从0开始计数的事实,但是一个20面的骰子没有0值,然后打印结果。

    public void Roller ( ) {
            roll = rand. nextInt ( dice ) ;
            roll += 1 ;
            System . out . println ( roll ) ;
    }

    最后,产生DiceRoller类的实例并调用其主要功能Roller

     // main loop
     public static void main ( String [ ] args ) {
             System . out . printf ( "You rolled a " ) ;

             DiceRoller App = new DiceRoller ( ) ;
             App. Roller ( ) ;
     }
    }

    只要您安装了Java开发环境(例如OpenJDK ),就可以从终端运行应用程序:

    $ java dice. java
       You rolled a 12

    施工人员在行动

    此示例项目中的DiceRoller类代表一个虚拟骰子工厂:调用它时,它将创建一个虚拟骰子,然后将其“滚动”。 但是,通过编写自定义构造函数,可以使Dice Roller应用程序询问您要模拟哪种骰子。

    大部分代码是相同的,除了构造函数接受一定数量的边。 该号码尚不存在,但稍后会创建。

    import java.util.Random ;

    public class DiceRoller {
            private int dice ;  
            private int roll ;
            private Random rand = new Random ( ) ;

      // constructor
      public DiceRoller ( int sides ) {
            dice = sides ;
      }

    模拟滚动的功能保持不变:

    public void Roller ( ) {
            roll = rand. nextInt ( dice ) ;
            roll += 1 ;
            System . out . println ( roll ) ;
    }

    代码的主要块提供运行应用程序时提供的任何参数。 如果这是一个复杂的应用程序,则您将仔细解析参数并检查意外结果,但是对于此示例,唯一的预防措施是将参数字符串转换为整数类型:

     public static void main ( String [ ] args ) {
             System . out . printf ( "You rolled a " ) ;
             DiceRoller App = new DiceRoller ( Integer . parseInt ( args [ 0 ] ) ) ;
             App. Roller ( ) ;
     }
    }

    启动该应用程序,并提供您希望裸片具有的面数:

    $ java dice. java 20
        You rolled a 10
        $ java dice. java 6
        You rolled a 2
        $ java dice. java 100
        You rolled a 44

    构造函数接受了您的输入,因此在创建类实例时,将在sides变量设置为用户指定的任何数字的情况下创建它。

    构造函数是编程的强大组件。 练习使用它们来释放Java的全部潜能。

    翻译自: https://opensource.com/article/19/6/what-java-constructor

    构造函数和复制函数java

    展开全文
  • 首先我们了解复制构造函数起作用三种情况: 1.当用一个对象去初始化同类另...2.如果某函数有一个参数类 A 对象, 那么该函数被调用时,类A的复制构造函数将被调用。 class A { public: A() { }; ...
  • 如果一个函数是通过值传递(pass by value)话,那么它真正传递其实是实参副本,该副本产生必定会调用复制构造函数。那么,试想一下,如果我们的复制构造函数是通过值传递话,它就会调用它本身来产生一个副本...
  •  众所周知,c++中类没有给出复制构造函数话,编译器会自动补上一个,然而对于深拷贝来说编译器给的复制构造函数是无法胜任。这时候,我们就要自己动手实现这个复制构造函数。 class Animal { public: Animal...
  • 该函数为值传递形参,需要对a进行复制操作,又会调用复制构造函数,而复制构造函数是值传递,又需要进行复制操作…无限循环下去。显然值传递是不可行,解决办法就是采用引用传递。 class Base{ Base(){} Base...
  • 下面关于复制构造函数调用时机,不正确的是()调用 A 访问对象时 B对象初始化时 C 函数具有类类型传值参数时 D 函数返回类类型时
  • 复制构造函数只有一个参数,由于在创建时传入的是同种类型对象,所以一个很自然想法将该类型对象作为参数,像这样:  Sample (Sample a);  不幸的是,即使这样朴实无华声明也隐含了一个微妙错误,呵,...
  •  复制构造函数是什么  复制构造函数首先是一个构造函数,它同所有其他构造函数一样与类同名,没有返回值。它有一个参数,是该类类型引用(一般将它声明为const,源于用于赋值对象一般不用改变它本身值...
  • 这样通过myclass 构造函数创建了一个myclass对象, 同样样在函数传参时候 void fun(myclass a) 参数a也必须调用myclass构造函数来生成对象, 那么在一个类拷贝构造函数中写出了这样形式 class ...
  • 复制构造函数很有用,但它们不是多态。...和 Java 克隆:复制构造函数与克隆,我详细讨论了 Java 克隆,并解释了每个概念,如克隆是什么, 它是如何工作,实现克隆必要步骤、如何使用 Object.clone()、 浅克...
  • 复制构造函数是一种特殊构造函数,具有一般构造函数所有特性 ,它形参是本类对象引用,比如(类名 对象名)。它作用是使用一个已经存在对象(此对象由复制构造函数参数决定),去初始化同类一个...
  • 复制构造函数是具有如下特点构造函数: 只有单个形参, 且形参是对本类类型对象引用(常用const修饰)。 复制构造函数在下列情况下使用:  1. 根据另一个同类型对象现实或隐式初始化一个对象  2. 复制一...
  • d的复制构造函数

    2020-02-15 13:53:49
    复制构造函数消除了对后复制的需求,并修复了其缺陷和固有限制.还讨论了演进和向后兼容性. 理由和动机 本节重点介绍了后复制存在问题,并说明了为什么复制构造函数比后复制好. 本(本)概述 无法有意义地重载或限定后...
  • 复制构造函数是一个成员函数,它使用同一个类另一个对象初始化一个对象。函数原型如下: ClassName(const ClassName &old_obj); 下面是一个复制构造函数简单示例: #include <iostream> using std::...
  • 构造函数是什么的 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员初始化工作,故:构造函数作用:初始化对象数据成员。 构造函数种类 1 class ...
  • 1、对象在创建时使用其他... //此时p作为函数的参数进行值传递,p入栈时会调用复制构造函数创建一个局部对象,与函数局部变量具有相同作用域需要注意的是,赋值并不会调用复制构造函数,赋值只是赋值运算符(重载)
  • C++——复制构造函数的形参为什么要是const引用

    千次阅读 多人点赞 2017-04-24 14:17:41
    //复制构造函数一开始想到原型 CBox cigar; CBox myBox(cigar); //如果编写这样一条语句 //那么将生成这样一条对复制构造函数的调用CBox::CBox(cigar);因为实参通过按值传递机制传递。在可以传递对象cigar之前...
  • class A { private: int value; public: A(int n) { value = n;...为复制构造函数,但是这里参数也A,我们知道A other 会去调用复制构造函数,这样就会出现自己调用自己情况,会出现栈溢出情况! ...
  • 假设Person一个类,复制构造函数的调用会在以下几种情况下发生: 1、对象在创建时使用其他对象初始化 Person p(q); //此时复制构造函数被用来创建实例p Person p = q; //此时复制构造函数被用来在定义...
  • 复制构造函数

    2016-08-04 20:58:32
    也许很多C++初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数什么用,其实复制构造...
  • 复制构造函数什么时候被调用?

    千次阅读 2013-07-30 12:00:02
    假设Person一个类,复制构造函数的调用会在以下几种情况下发生: 1、对象在创建时使用其他对象初始化 Person p(q); //此时复制构造函数被用来创建实例p Person p = q; //此时复制构造函数被用来在
  • 近期在学C++过程中,...一、什么是复制构造函数  一种特殊重载构造函数,他形式很固定:[类名]::[构造函数名](const [类名] &amp;[参数]); (参数本类型一个引用变量)  实际代码:MyString::...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,412
精华内容 1,364
关键字:

复制的函数是什么