代码之家  ›  专栏  ›  技术社区  ›  fredley

将C++构造函数转换成java

  •  4
  • fredley  · 技术社区  · 14 年前

    我正在努力把一个小程序从C++翻译成java。我从来没有真正使用过C++,所以有些语法有点神秘。尤其是,我很难计算出Java的等价物是什么:

    file: SomeClass.cpp
    
    SomeClass::SomeClass( BitStream* data, const char* const filename ) :
        data( data ), cipher( filename ), iv( new Botan::byte [cipher.BLOCK_SIZE] ),
        ivBitsSet( 0 ), keyMaterialRemaining( 0 ), keyMaterial( new Botan::byte [cipher.BLOCK_SIZE] ) {}
    

    我很高兴(在Java中):

    public SomeClass{
      public SomeClass(InputStream data, String filename){
    
      }
    }
    

    : 在C++中。它们是田地吗?可选参数?为一些琐碎的问题道歉,但在这一点上谷歌还没有做得太多。。。

    4 回复  |  直到 14 年前
        1
  •  9
  •   Nim    14 年前

    在“”之后的所有东西都被称为成员初始化列表,在C++中,这是初始化这个类成员的一种方式。例如,从您的代码中,“data”是SomeClass的一个成员,因此Java中的等价物是构造函数主体中的一个简单赋值。

    this.data = data;
    

    其他成员等

        2
  •  4
  •   Thomas Lötzer    14 年前

    field initializer lists . 它们设置字段的初始值。

    Java版本类似于

    public SomeClass{
      public SomeClass(InputStream data, String filename){
        //either set the field directly...
        this.data = data;
        //...or call the constructor, depending on the type
        this.cipher = new Cipher(filename);
      }
    }
    

    注意,这不一定是简单的字段设置器,它们也可能是对字段类型的构造函数的调用。

        3
  •  2
  •   Johan Kotlinski    14 年前

    cipher(filename)相当于写入cipher=filename;

        4
  •  1
  •   siukurnin    14 年前