`
k_lb
  • 浏览: 837980 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

c++和java的类转换的区别

 
阅读更多

派生类到基类的转换:c++中,可以使用它的地址对基类类型的指针进行赋值和初始化,还可以使用派生类型的引用初始化基类类型的引用。严格来说,对对象没有类似转换,编译器不会自动将派生类型对象转换为基类类型对象。这是与java的不同,java可以使用对象(严格来说实际上还是使用的对象的引用!!!!)

其实java中传递一个对象,实际上操作的不是对象本身,而是这个对象的引用,而c++则严格区分了,如果传递对象引用就要加“&”符号,不加这个符号,就传递的是对象本身!!!!我认为这个才是最大的不同。。

但是为什么c++仍然可以采用直接用对象初始化或赋值呢?这就需要采用复制构造函数和赋值操作符的功能了!!(来自于c++ primer 488页)



调用拷贝构造函数的情形

  在C++中,下面三种对象需要调用拷贝构造函数:
  1) 一个对象以值传递的方式传入函数体;
  2) 一个对象以值传递的方式从函数返回;
  3) 一个对象需要通过另外一个对象进行初始化;
  如果在前两种情况不使用拷贝构造函数的时候,就会导致一个指针指向已经被删除的内存空间。对于第三种情况来说,初始化和赋值的不同含义是构造函数调用的原因。事实上,拷贝构造函数是由普通构造函数和赋值操作符共同实现的。描述拷贝构造函数和赋值运算符的异同的参考资料有很多。
  拷贝构造函数不可以改变它所引用的对象,其原因如下:当一个对象以传递值的方式传一个函数的时候,拷贝构造函数自动的被调用来生成函数中的对象。如果一个对象是被传入自己的拷贝构造函数,它的拷贝构造函数将会被调用来拷贝这个对象这样复制才可以传入它自己的拷贝构造函数,这会导致无限循环直至栈溢出(Stack Overflow)。除了当对象传入函数的时候被隐式调用以外,拷贝构造函数在对象被函数返回的时候也同样的被调用。

分享到:
评论

相关推荐

    C++转换JAVA工具

    "C++转换JAVA工具" 提供了一种解决方案,使得开发者可以从C++代码无缝过渡到Java代码,或者将Java代码转换为C++,以适应不同的开发需求和环境。这种工具的主要目标是提高开发效率,降低维护成本,以及实现平台间的...

    c++ 转换 java c# 转换 java c++ 转换 c#

    转换时,C++的类需要映射到Java的类,指针通常会转化为Java的引用,而内存管理则从手动管理(C++的new和delete)转变为自动垃圾回收(Java的GC)。`Free Edition CPlusPlus to Java Converter.zip`可能是一个工具,...

    C++代码转java工具

    3. **结构转换**:处理C++的类和对象到Java的类和对象的转换,包括构造函数、继承、多态等面向对象特性。 4. **异常处理**:将C++的错误处理机制(如返回错误码)转换为Java的异常处理机制。 5. **内存管理**:C++...

    面向对象编程C++和Java比较教程

    本教程聚焦于C++和Java这两种广泛使用的OOP语言的比较,旨在帮助程序员在两者之间灵活转换。 C++,由Bjarne Stroustrup设计,起源于C语言,是C的增强版,具有底层控制能力和高性能。C++支持类、封装、继承、多态等...

    CPlus_to_Java_Converter;C++转java工具

    《C++到Java转换器:理解跨语言编程的挑战与实践》 在计算机科学领域,跨语言编程是一项关键技能,特别是在需要利用不同编程语言的优势时。C++和Java是两种广泛应用且具有各自特点的编程语言。C++以其高效、灵活和...

    C++转Java工具

    例如,C++的类会被转换为Java的类,指针会映射到Java的对象引用,C++的动态内存管理会被转换为Java的垃圾回收机制。 在描述中提到的,这个工具对JNI开发很有帮助,意味着它可能能够帮助开发者更容易地将C++的本地...

    Tangible Software Solutions 源代码转换可在 VB.NET、C#、Java、C++和Python之间

    Tangible Software Solutions 是功能齐全的源代码转换软件,可在 VB.NET、C#、Java、C++和Python之间,使用简单,功能丰富,灵活的进行选择和操作,界面友好。 C# to C++ 转换 C# to Java 转换 C# to VB 转换 C++ ...

    aix下使用c++调用java类(包)

    在`C++调用JAVA方法详解.txt`中,可能详细解释了如何编写这些JNI函数,包括如何定义`JNIEXPORT`和`JNIEnv *`,以及如何处理Java对象和C++对象之间的转换。例如,`JNIEXPORT`是一个修饰符,指示函数是JNI接口的一部分...

    C++ to Java Converter

    超强的C++ to Java转换工具!!希望对大家有帮助。无污染。

    C++转JAVA的转换方法及约定[整理].pdf

    C++转JAVA的转换方法及约定[整理].pdf

    c++和java互调代码示例

    在IT领域,C++和Java互调是一种常见的需求,特别是在构建跨平台的系统或需要利用特定语言的优势时。本篇文章将深入探讨如何实现C++和Java之间的互调,并通过具体的代码示例进行详细讲解。 首先,Java Native ...

    jni java类与c++类映射的例子

    通过理解JNI的工作原理,以及如何映射Java类和C++类,我们可以有效地在两种语言之间进行数据交换和方法调用,实现混合编程的优势。在实际项目中,这常用于图形渲染、高性能计算、底层系统接口调用等场景。

    Java转C++代码工具 J2C

    J2C工具的核心功能在于它能解析Java源代码,理解和转换其中的语法结构、类、对象、接口、方法等,将其转换为相应的C++语法。这涉及到对两种语言的语法规则、类型系统、异常处理、内存管理等方面的深刻理解。例如,...

    C++头文件转JAVA JNA接口类

    本篇文章将详细介绍如何将C++的头文件转换为Java的JNA接口类,以便于Java程序调用C++ DLL中的接口。 首先,我们需要理解JNA的工作原理。JNA通过定义Java接口来映射C/C++函数,并在运行时动态加载本地库,实现调用。...

    C++和Java互相调用实例

    注意函数名的格式,它是Java类名和方法名的JNI风格转换。 5. **编译和链接**:使用NDK的构建系统(如Android.mk或CMakeLists.txt),编译C++代码并生成.so文件。 6. **调用**:在Java代码中,可以像调用普通方法...

    C++与Java混合编程实例

    - **理解两种语言的数据类型和内存管理**:C++和Java的内存管理和数据类型有显著差异,因此在进行交互时需要谨慎处理数据的转换和生命周期。 - **熟悉JNI API**:对于JNI方法,需要了解如何声明本地方法、创建JNI...

    c++调用java工程

    对于C++调用Java而言,需要通过JNI API创建并启动一个Java虚拟机实例,然后通过这个实例访问Java类和方法。 #### 示例:C++调用Java方法 考虑一个简单的示例,其中C++调用一个Java类`WinFile`的`GetFilesFromDir`...

    Java调用c++类对象

    Java调用C++类对象是一种跨语言交互技术,主要用于利用Java的平台独立性和C++的高性能。这种技术通常依赖于Java Native Interface (JNI),它允许Java代码直接调用本地(如C++)代码,反之亦然。下面我们将深入探讨...

    使用C++创建java虚拟机JVM,使用JNI调用java函数.zip

    在上述过程中,需要注意Java和C++的数据类型转换,因为它们之间存在差异。例如,Java的`int`在JNI中是`jint`,`String`是`jstring`。对于复杂类型,如数组或对象,需要使用特定的JNI函数进行处理。 在提供的资源...

Global site tag (gtag.js) - Google Analytics