欢迎访问服务百科信息网!
首页 >科技 >初始化器
初始化器

初始化器

(初始化器)
in in in
初始化器资料
  • 分类:数学名词
  • 正文

    Time(int a,int b)

    :x1(a),x2(b) //初始化x1 x2 调用的是(可能是复制,要看a的类型是否与x1相同)构造函数 这样初始化在Time的对象构造完成之前

    {

    x1=a; //这样的方式 Time的对象已经构造起来了

    x2=b;

    }

    引用:“如int a(3);和int a=3;一样都是将a初始化为3.我觉得int a(3);应该调用的int类的复制构造函数。”

    可以这么理解 但实际上内部类型是没有这些构造函数的。C++为了方便让它们支持这样的操作

    如果x1,x2和a,b的类型一样,是不是调用的复制构造函数。那不一样的时候是如何调用的呢。

    你说内部类型没有复制构造函数。那他是怎么实现int a(3)的呢。

    int和其他类型不能被看做和自定义类一样的类吗!还是他们比较特殊。

    像自定义一样 都调用(默认)复制构造函数

    自定义类不显示定义复制构造函数时,系统会自动生成一个默认的复制构造函数

    int的类型你也可以这么理解

    #include <iostream>

    using namespace std;

    class B

    {

    int n;

    public:

    B(int _n=0)

    {

    n=_n;

    }

    B(B& o)

    {

    cout<<"Call B的复制构造函数:对象"<

    }

    };

    class A

    {

    B obj1;

    B obj2;

    public:

    A(): obj2(B(2)), obj1(B(1)) //列表与变量声明的顺序无关

    {

    }

    A(A& o)

    {

    cout<<"Call A的复制构造函数"<

    }

    };

    int main()

    {

    A obj;

    A obj1(obj); //调用复制构造函数 与 int a(3)比较

    A obj2 = obj; //调用复制构造函数 与 int a=3 比较

    obj1 = obj2; //调用赋值函数 与 a=3 比较

    return 0;

  • 上一篇百科:分割视图
  • 下一篇百科:ClickOnce