C++中为什么说构造函数的重载会给初始化带来多种方式呢?

C++中为什么说构造函数的重载会给初始化带来多种方式呢?,第1张

其实很简单,构造函数是类在初始化时要调用的函数,增加了构造函数,那么自然就增加了初始化方式。

public class TestClass

{

public TestClass(){}

}

在这种情况下只有一个构造函数,那么寝化化时也只有一种方式(如果没有构造函数时,编译系统会自动增加一个,也就是说上文的构造函数可以不写),但并不是没有构造函数,只有抽象类无法初始 类,不能含有构造涵数的。

public class TestClass1

{

private string Property1;

public TestClass1(){}

public TestClass1(string parm){thisProperty = parm;}

}

这种情况下就是对构造函数进行了重载,显然在初始化时可以使用

TestClass1 test1 = new TestClass1();

TestClass1 test2 = new TestClass1('dfdfd');

这两种初始化方式的,如果只有一个或不写(编译系统自动增加),那么只可能有第一种方式,不可能有第二种方式。所以构造函数是初始化要调用的函数,如果对构造函数进行重载,调用 构造函数的方式也有多种,也就是我们所说的多种初始化方式。

this(???),super(???)

构造方法调用的规则

  首先判断子类中是否有super(必须在构造方法中第一条语句使用)调用父类构造方法,如果有,则调用super匹配的父类构造方法。

  如果没有,如果父类显式定义构造方法,则判断是否有无参构造方法,如果有,则调用父类无参构造方法。

  如果没有,则编译出错。

  如果父类没有定义构造方法,则系统自动默认一个无参构造方法,并且执行体为空。

  最后判断是否有this(必须在构造方法中第一条语句使用)调用本类构造方法,如果有,则调用this匹配的本来构造方法

构造函数是C++中对类对象进行初始化时调用的函数 要求构造函数的函数名必须是类名并且不能有返回值 而运算符重载函数必须是 operator+ 这样的形式 而且应该还有返回值 构造函数的功能形式是严格限定的 不能用它进行运算符的重载 。

当然可以。。

public class Test{

Test(){

Systemoutprintln("test");

}

Test(String s){

Systemoutprintln("test "+s);

}

public static void main (String main[]){

Test t=new Test();

Test t2=new Test("r");

}

}

一个

构造函数

里最多只能调用一个

基类

或自己其它的构造函数。

调用那么多构造函数也没什么意义。不如把常用的几个过程

提取成方法,然后让构造函数来调用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11670937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存