C++中的结构体对应与java中的什么?
发布网友
发布时间:2022-04-25 20:45
我来回答
共5个回答
热心网友
时间:2022-06-17 06:28
对c++来说,结构体基本相当于一个只有public成员的类,即无法支持访问控制。也就是说,c++中你用结构体写的,都可以用类完成。
java中的类,对于c++的类
java普通对象方法(非static,非final)对应于c++类普通的 virtual 方法
java抽象方法/接口声明方法,对应于 c++类virtual fun()=0;的形式
热心网友
时间:2022-06-17 06:28
C++中的struct对C中的struct进行了扩充,除了struct成员默认权限是public,而class默认是private,C++中的struct与class功能几乎等价,同样的,也对应Java中的class。
按C++设计思路,struct的保留是为了C程序员在C++语言中找到归属感。
热心网友
时间:2022-06-17 06:29
C++不是完全面向对象的语言,而java是完全面向对象的语言,从某种角度来说,可以把C++中的结构体当做java中的类理解。因为他们的思想确实很像。但是它们不是一个东西,这要涉及到其内部存储等问题了...
热心网友
时间:2022-06-17 06:29
Effective Java里说C/C++里的联合、结构体在Java中都是用类实现的。可以看一下这本书。
另外Javolution这个第三方库提供了Struct实现类似C/C++中struct的功能。
C Struct的一个简单例子:
enum Gender{MALE, FEMALE};
struct Date {
unsigned short year;
unsigned byte month;
unsigned byte day;
};
struct Student {
enum Gender gender;
char name[64];
struct Date birth;
float grades[10];
Student* next;
};
Java的等价代码:
public enum Gender { MALE, FEMALE };
public static class Date extends Struct {
public final Unsigned16 year = new Unsigned16();
public final Unsigned8 month = new Unsigned8();
public final Unsigned8 day = new Unsigned8();
}
public static class Student extends Struct {
public final Enum32<Gender> gender = new Enum32<Gender>(Gender.values());
public final UTF8String name = new UTF8String(64);
public final Date birth = inner(new Date());
public final Float32[] grades = array(new Float32[10]);
public final Reference32<Student> next = new Reference32<Student>();
}
参考:http://javolution.org/apidocs/javolution/io/Struct.html
热心网友
时间:2022-06-17 06:30
没有特别合适的对应的结构体
c++的类对应java的类,结构体没有对应的