相关疑难解决方法(0)

从C++切换到Java

我是一名C++开发人员.我对这门语言充满热情,特别是真正享受模板元编程和编译时多态性给我的力量,以及最近的开发,如C++ 11的可变参数模板和右值参考等.

我喜欢C++给了我如此多的控制权,并且能够利用内存做一些巧妙的技巧来提高性能.

我最近有机会与一家公司进行面谈,该公司用Java完成所有开发工作.他们声称他们首先对技术充满热情,并且他们正在努力寻找真正优秀的技术专家.因此,他们正在寻找核心C++技术专家并让他们进行Java交换.

对Java知之甚少,我不确定这是否是我想要走的路.

  • 我们在C++中使用的低级螺母和螺栓是用Java取出的吗?
  • 一个热情的C++开发人员会喜欢Java还是很久才会回到C++?

我意识到这是非常主观的,但我希望之前走过这条道路的人可以提供一些见解.

c++ java programming-languages java-ee

11
推荐指数
1
解决办法
1万
查看次数

C++和Java对象模型之间的差异

  1. 在Java中,序列化对象非常容易.在C++中,只有memcpy它们像C结构(没有多态性)才对安全(?)对象.在C++中,如果编译器能够生成默认(普通)复制构造函数,那么为什么它不能生成自动序列化的代码?

  2. 在Java中,只能从ctor访问静态函数和数据成员.在C++中,我可以愉快地使用ctor中的非静态成员和函数.

  3. 在Java中,我可以在类中初始化内联的数据成员.在C++中,这是一个编译错误.

  4. 在Java中,我可以初始化finalctor中的成员.在C++中,我必须const在初始化列表中初始化成员.在C++中,当控制到达ctor的主体时,所有成员ctor都运行了,对吧?

  5. 在Java中,ctor可以调用另一个ctor.在C++中,我们不能这样做.

  6. 在Java中,this直到ctor返回之后才无效(this参考的转义,多线程中的错误).什么时候this在C++中有效?在this可以很容易地在两个C++和Java中逸出:在构造函数登记尚未构造的对象,以监听器(观察者模式).

  7. 在Java中,我不能在派生类中创建基类private的公共函数.我很震惊地看到在C++中是好的甚至是有用的.

任何人都可以对这些差异做出简短的解释吗?

更新.到目前为止,试图收集答案.

  1. Boost有类似序列化的支持.(托尼)

  2. 尽管我搞砸了这一点,但Alf P. Steinbach给出了一个有趣的例子.

  3. C++ 0x将支持比C++ 98更实用的初始化.(Alf P. Steinbach)#3在C++ 0x中是合法的(Ken Bloom)

  4. 在构造函数的{body}开始执行时,保证在构造函数自己的类中声明的数据成员已完全构造.(C++ - FAQ-精简版)

  5. C++ 0x将允许构造函数调用其他对等构造函数(Wikipedia,C++ 0x)

  6. C++ 03考虑在构造函数完成执行时构造的对象(Wikipedia).

  7. 访问控制之类的东西与对象模型没什么关系:这是访问控制系统的一个特性,它是一个编译时功能.(Yttrill)

c++ java constructor

6
推荐指数
1
解决办法
1603
查看次数

标签 统计

c++ ×2

java ×2

constructor ×1

java-ee ×1

programming-languages ×1