精华内容
下载资源
问答
  • C++中构造函数重载

    2020-09-03 14:10:56
    主要介绍了C++中构造函数重载的相关资料,十分的详细,需要的朋友可以参考下
  • kotlin 构造函数重载 构造函数重载 (Constructor Overloading) A Kotlin class has a primary constructor and one or more secondary constructors. When a class has more than one constructor, it will be known...

    kotlin 构造函数重载

    构造函数重载 (Constructor Overloading)

    A Kotlin class has a primary constructor and one or more secondary constructors. When a class has more than one constructor, it will be known as constructor overloading.

    Kotlin类具有一个主构造函数和一个或多个辅助构造函数。 当一个类具有多个构造函数时,将称为构造函数重载。

    Kotlin中用于构造函数重载的程序 (Program for constructor overloading in Kotlin)

    package com.includehelp
    
    //declare Class with Parameterized primary constructor
    class ConstructorOverloading(len:Int){
    
        //Init block, executed when class is instantiated, 
        //before secondary constructor body execution
        init {
            println("Init Block  : $len")
        }
    
        //Secondary Constructor, 
        //delegate primary constructor with 'this' keyword
        constructor() : this(10) {
            println("Secondary Constructor No Parameter")
        }
    
        //Parameterized Secondary Constructor, 
        //delegate primary constructor with 'this' keyword
        constructor(name:String):this(name.length){
            println("Secondary Constructor with One Parameter  : $name")
        }
    
        //Parameterized Secondary Constructor with two parameter,
        //call same class non Parameterized secondary constructor 
        //using 'this()'
        constructor(a:Int, b:Int) : this() {
            println("Secondary Constructor With Two Parameter [$a, $b]")
        }
    }
    
    
    //Main Function, Entry Point of Program
    fun main(args:Array<String>){
    
        //Create instance of class , with Primary Constructor
        ConstructorOverloading(100)
    
        //Create instance of class, 
        //with no argument secondary constructor
        ConstructorOverloading()
    
        //Create instance of class, 
        //with one argument secondary constructor
        ConstructorOverloading("India")
    
        //Create instance of class, 
        //with two argument secondary constructor
        ConstructorOverloading(10,20)
    }
    
    

    Output:

    输出:

    Init Block  : 100
    Init Block  : 10
    Secondary Constructor No Parameter
    Init Block  : 5
    Secondary Constructor with One Parameter  : India
    Init Block  : 10
    Secondary Constructor No Parameter
    Secondary Constructor With Two Parameter [10, 20]
    
    
    

    翻译自: https://www.includehelp.com/kotlin/example-of-constructor-overloading.aspx

    kotlin 构造函数重载

    展开全文
  • 什么是构造函数重载? 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。 Java中构造函数重载和方法重载很...

    什么是构造函数?什么是构造函数重载?

    当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。 
    Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

    展开全文
  • 默认构造函数和构造函数重载

    万次阅读 多人点赞 2017-09-29 08:15:52
    本文主要总结了默认构造函数的相关用法和构造函数重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。首先需要了解构造函数是用来做什么?该类对象被创建时,编译器为对象分配内存空间...

    本文主要总结了默认构造函数的相关用法和构造函数重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。

    首先需要了解构造函数是用来做什么?该类对象被创建时,编译器为对象分配内存空间,并自动调用该构造函数,由构造函数完成数据成员的初始化工作。

    一、默认构造函数

    • 从代码层面进行分析
    class testClass {
    public :
        testClass();//不带参数的默认构造函数---------
        testClass(int a, char b);//构造函数
        testClass(int a = 0, char b = 'c');//参数都有默认值的默认构造函数-------
    
    private:
        int m_a;
        char m_b;
    };
    • 默认构造函数主要用来完成如下形式的初始化。
    testClass classA;
    //或者
    testClass *classA = new testClass;

    在这种情况下,如果没有提供默认构造函数也就是以上两种默认构造函数其中的一种,编译器会报错。

    • 两种方式的默认构造函数
      1)、定义一个无参数的构造函数;
      2)、定义所有参数都有默认值得构造函数。
      注意:一个类只能有一个默认构造函数。也就是说上述两种方式定义的默认构造函数不能同时出现,一般选择testClass();这种形式的默认构造函数。只有程序员定义了构造函数,编译器就不会再提供默认构造函数了。所以程序员最好再手动定义一个默认构造函数,以防止出现testClass classA;这样的错误。
      读者朋友可以试着修改静态成员变量和静态成员函数在C++类中的作用中的例子,试着创建Myclass类的对象,因为代码中定义了构造函数,所以编译器没有提供默认的构造函数,所以编译会报错,大家可以试着修改一下。

    • 举例说明——求盒子的容积

    #include <iostream> 
    using namespace std; 
    class Box {   
    public :   
        Box(int h=10,int w=10,int len=10); //在声明构造函数时指定默认参数--默认构造函数
        int volume( );   
    private :   
        int height;   
        int width;   
        int length; 
    }; 
    Box::Box(int h,int w,int len) 
    {   
        height=h;   
        width=w;   
        length=len; 
    }
    //或者
    //Box::Box(int h,int w,int len):height(h),width(w),length(len)
    //{
    //
    //}
    
    int Box::volume( )
    {   
        return (height*width*length);
    } 
    
    int main( ) 
    {  
        Box box1; //没有给实参   
        cout<<"The volume of box1 is "<<box1.volume( )<<endl;   
    
        Box box2(15); //只给定一个实参   
        cout<<"The volume of box2 is "<<box2.volume( )<<endl;   
    
        Box box3(15,30); //只给定2个实参   
        cout<<"The volume of box3 is "<<box3.volume( )<<endl; 
    
        Box box4(15,30,20); //给定3个实参  
        cout<<"The volume of box4 is "<<box4.volume( )<<endl;  
        return 0; 
    }

    可以看到,在构造函数中使用默认参数是方便而有效的,它提供了建立对象时的多种选择,它的作用相当于好几个重载的构造函数。
    它的好处是,即使在调用构造函数时没有提供实参值,不仅不会出错,而且还确保按照默认的参数值对对象进行初始化。尤其在希望对每一个对象都有同样的初始化状况时用这种方法更为方便。

    二、构造函数重载
    在一个类中可以定义多个构造函数,以便提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。这称为构造函数的重载。

    #include <iostream> 
    using namespace std; 
    class Box {   
    public : 
        Box(); //声明一个无参的构造函数   
        //Box(int h); //有1个参数的构造函数 
        //Box(int h,int w); //有两个参数的构造函数 
        Box(int h, int w, int len) :height(h), width(w), length(len);//声明一个有参的构造函数,用参数的初始化表对数据成员初始化
        int volume( );   
    private :   
        int height;   
        int width;   
        int length; 
    }; 
    Box::Box() //定义一个无参的构造函数 
    {   
        height=10; 
        width=10; 
        length=10; 
    } 
    //Box::Box(int h)
    //{
    //
    //}
    //
    //Box::Box(int h,int w)
    //{
    //
    //}
    
    Box::Box(int h, int w, int len) :height(h), width(w), length(len)
    {
    }
    
    int Box::volume( )
    {   
        return (height*width*length); 
    } 
    
    int main( ) 
    {   
        Box box1; //建立对象box1,不指定实参  
        cout<<"The volume of box1 is "<<box1.volume( )<<endl;   
        Box box4(15,30,25); //建立对象box4,指定3个实参   
        cout<<"The volume of box4 is "<<box4.volume( )<<endl;   
        return 0; 
    } 
    

    以上代码定义了四个重载构造和拿书,在建立对象时不指定参数,或者分别给定1个参数,2个参数和3个参数。

    关于构造函数的重载的几点说明:
    1、调用构造函数时不必给出实参的构造函数,称为默认构造函数(default constructor)。显然,无参的构造函数属于默认构造函数。一个类只能有一个默认构造函数。如果在建立对象时选用的是无参构造函数,应注意正确书写定义对象的语句。
    2、尽管在一个类中可以包含多个构造函数,但是对于每一个对象来说,建立对象时只执行其中一个构造函数,并非每个构造函数都被执行。

    展开全文
  • 构造函数重载

    2015-04-24 15:37:26
    在vs2010上写的一个构造函数重载的例子,代码非常简单易懂,适合初学者参考。
  • C++构造函数重载

    万次阅读 2018-07-25 10:35:38
    //构造函数重载,析构函数不可以重载 class Box { public: Box();//无参的构造函数 Box(int length,int width,int height);//有参数的构造函数 ~Box(); //调用析构函数 int volume(); //成员函...

    程序例子如下:

    #include "iostream"
    using namespace std;
    
    //构造函数的重载,析构函数不可以重载
    class Box
    {
    public:   
    	Box();//无参的构造函数
    	Box(int length,int width,int height);//有参数的构造函数
    	~Box();  //调用析构函数
    	int volume(); //成员函数器求体积
    private:
    	int length;
    	int width;
    	int height;
    };
    
    Box::Box()
    {
    	length = 10;
    	width =10;
    	height =10;
    	cout << "无参的构造函数被调用:Box()"<<endl; 
    
    }
    Box::Box(int length,int width,int height):length(length),width(width),height(height)    //有参数的构造函数,通过初始化列表赋值
    { cout << "含参的构造函数被调用:Box(int length,int width,int height)"<<endl; }
    
    Box::~Box() //调用析构函数
    {
       cout << "析构函数被调用:~Box()"<<endl; 
    }
    
    int Box::volume()//成员函数器求体积
    {
       return (height*width*length);
    }
    
    int main()
    {
    	Box box1;
    	cout <<"The volume of box1 is :" << box1.volume()<<endl;
    
    	Box box2(15,12,13);
    	cout <<"The volume of box2 is :" << box2.volume()<<endl;
    
    
    	return 0;
    }

    运行结果如下:

    对于构造函数的使用:

    1、在类进入作用域的时候调用构造函数;

    2、构造函数没有返回值,因此也不需要在定义构造函数时候声明类型,这是和一般函数的重要区别;

    3、构造函数不需要用户调用,也不需要用户调用;

    4、函数的函数体不仅可对数据成员赋值,而且可以在构造包含其他语句,但是为了保证程序的清晰,一般不这样做;

    5、如果用户没有定义构造函数,系统会默认的生成一个缺省的构造函数,该函数体是空的,没有参数,也不进行初始化操作;

    6、调用构造函数时不必给出实参的构造函数,称为默认构造函数(default constructor)。显然,无参的构造函数属于默认构造函数。一个函数智能有一个默认的构造函数

    7、一个类可以有多个构造函数,但是在调用的时候,只会更具需要调用其中的一个构造函数。

     

    展开全文
  • 前两行为函数声明(函数签名) 第三行是函数实现,参数必须全部为可选类型 类似的: constructor (+1 overload) class Store { constructor(x: string) constructor(x: number, y: number) ...
  • 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有提供构造函数...Java中的构造函数重载和方法重载很类似,可以为一个类创建多个构造函数。每一个构造函数都必须有它自己唯一的参数列表...
  •  java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数都必须有他唯一的参数列表。  java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不是自己写的构造函数的情况...
  • 场景 QJsonArray rgParams = { 10, 20, 30, 40 }; 编译代码的时候出错,C11标准才支持这种类的初始化列表语法,因此如果当前VS的版本过低,必须调整已有的代码,例子如下: QJsonArray rgParams;...
  • 重载构造函数

    2014-01-14 11:47:02
    重载构造函数,通过小代码段实例来讲解、分析重载构造函数
  • CGoods_2_构造函数重载.cpp
  • 本文主要总结了默认构造函数的相关用法和构造函数重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。 一、构造函数的定义 构造函数是用来做什么?就是该类对象被创建时,编译器为对象...
  • 复制构造函数重载

    千次阅读 2019-12-21 13:33:35
    以下代码编译时要加:-fno-elide-constructors 来关闭编译器优化,否则可能看不到复制构造函数的调用。 #include <iostream> using std::cout; using std::endl; class A { public: A() = default; A(A&...
  • Java中构造函数重载和方法重载

    千次阅读 2016-03-18 12:11:57
    通过一个小例子实现Java中构造函数重载和方法重载
  • 构造函数   构造函数是一种比较特殊的成员函数,用于创建并初始化对象。声明对象时构造函数会被编译器自动调用。 构造函数的四个特点:   一. 构造函数的访问权限必须为公有(public);   二. 构造函数名和类名...
  • Java程序 程序以显示构造函数重载 这是我的第一次尝试,我不知道我是否做对了,欢迎提出任何建议。
  • c++构造函数重载和析构函数问题

    千次阅读 2017-09-19 10:55:20
    构造函数和析构函数在c++类的使用中是非常重要的,因此掌握他们的基本用法和使用方式是很有必要的,这次系统的使用了构造函数重载,并定义了析构函数来了解和使用他们 #include #include using namespace std; ...
  • c++构造函数重载

    2020-10-06 21:12:07
    一个类可以有多个构造函数,这些构造函数有着不同的参数个数或者不同的参数类型,这些构造函数称为重载构造函数 使用不同的参数个数和参数类型对不同的对象进行初始化,实现类定义的多元性 #include <iostream>...
  • 构造函数(一本正经的讲构造函数 如果想看不正经的往下翻看方法重载) 方法名称与类名相同,没有返回值类型,连void都没有 用作给类的对象初始化 一个类中可以有多个构造 如果手动添加一个构造,系统不会自动生成无参...
  • JAVA 构造函数及其重载

    千次阅读 2019-04-13 23:34:31
    以上给出了不同构造函数重载,不同构造的同一个类的实例化对象,在实例化对象时系统就会自动调用构造函数,给相应得值进行初始化赋值;不同的构造进行不同得初始化,不同的赋值 5、如果类中没有定义构造函数,...
  • C++构造函数的默认参数 和普通函数一样,构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。 【例】 #include using namespace std; class Box...
  • C++:构造函数重载

    千次阅读 2019-09-21 10:53:30
    函数重载指的是函数名相同执行相同的功能的函数,但是形参名,形参个数是不相同的。 构造函数指的是函数名和类名是相同的。 #include<iostream> using namespace std; class Rectangle{ public: Rectangle...
  • 拷贝构造函数重载赋值运算符

    千次阅读 2019-05-20 13:07:02
    拷贝构造函数应用的场景: 用一个对象初始化另外一个对象 函数的参数是一个对象,并且是值传递方式 函数的返回值是一个对象,并且是值传递方式 特别注意的是定义一个类时,会有默认拷贝构造函数(点击查看...
  • 关于python构造函数重载

    千次阅读 2019-07-28 15:57:20
    python的构造函数不能重载,不能重载,不能重载 #-*-coding:UTF-8 class MyCalss(object): i = 123 def __init__(self,name): print("我是带参数的构造函数") def __init__(self): print("我是不带...
  • 在一个类中可以定义多个构造函数版本, 即构造函数允许被重载,只要每个构造函数的形参列表是唯一的。 一个类的构造函数数量是 没有限制的。 一般地, 不同的构造函数允许建立对象时用不同的方式来初始化数据成员。 ...
  • 文章目录C++中重载构造函数的互相调用初始化成员变量的问题不能直接互相调用的重载构造函数使用一个private的函数初始化成员变量使用带有默认参数的构造函数使用placement new运算符调用重载构造函数使用C++11的委托...
  • 拷贝构造函数(对象初始化对象的过程)4.1 前言4.2 什么是拷贝构造函数4.3 拷贝构造函数的特性4.4 拷贝构造函数参数中的const是否可以去掉4.5 拷贝构造函数参数中&是否可以去掉5. 1. 类的6个默认成员函数 如果一...
  • 在一个类中可以定义多个构造函数,以便为对象提供不同的初始化的方法,供用户选用,这些构造函数具有相同的名字,而参数的个数或参数的类型不相同,这称为构造函数的重载(函数重载)。 #include<iostream>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,901
精华内容 106,360
关键字:

构造函数重载