java的构造函数体里能给成员常量赋值而c++的则不行 c++要在构造函数的初始化列表中给常量赋值这是不是说 java的构造函数体里的执行发生时间 与 c++造函数的初始化列表 的时间是一样的 ,而与 c++造函数体执行的时间不一样c++ 中构造函数是分两步完成的 第一步是初始化 另一步是构造函数体的运行而java中则是一次完成?

解决方案 »

  1.   

    java中也有区分的
    可以在构造方法之前,也可以在构造方法之后其实所有的变量都是在构造方法调用之前就初始化好了.只不过在构造方法里重新赋值而已eg:class A
    {
       int a;//int a=0;
       public A()
       {
          a=2;
       }
    }
      

  2.   

    to redduke1202
    如果java也是在函数体执行之前把变量构造好了
    class A
    {
    final int a;A()
    {
    a=1;  // 这样不是错误了吗?  常量只能在初始化的时候赋予值 ,而这里常量已经初始化了、
          //, 却又赋值为0 ,但是java中不会出错
    }}
      

  3.   


    to ls 我指的初始化不是 final int a;比如c++中class A
    {const int a;A():a(1)  //必须这样   放在初始化列表中 这样在构造a的时候就同时给他赋值为1了 
    {
    a=1;   //放这里是错误的 a在这之前已经创建完毕了 ,而这里却“给作为常量的a”重新赋值 
    }}