java中的c++ OOP指针技巧
C++ OOP pointer trick in java
我是Java新手,但我有相当多的c++经验。我想在Java中做一些只能在c++中使用指针才能完成的事情。因为代码能解释千言万语:
class Parent;
class Kid;
class Parent{
public:
Parent();
private:
Kid *kid;
};
class Kid{
public:
Kid(Parent*);
private:
Parent *parent;
};
Parent::Parent(){
//give self
kid = new Kid(this);
}
Kid::Kid(Parent* parent){
//kid can now adress the class containing the instance
parent = parent;
}
那么,这在Java中可能吗?如何实现?
你是正确的,在Java中没有"指针",但在实践中,所有对对象的引用都非常像指针。因此,每当一个变量、字段或参数指向一个对象时,它就"指向"内存中的某个特定对象。
因此,在Java中,您的代码看起来像:class Parent {
private Kid kid;
public Parent() {
kid = new Kid(this);
}
}
class Kid {
private Parent parent;
public Kid(Parent p) {
parent = p;
}
}
这在Java中很容易。所有Object类型的Java变量都是引用。所以Kid可以有一个Parent字段引用Parent对象。
public class Parent{
private Kid kid;
public Parent( ) {
kid = new Kid( this );
}
}
public class Kid {
private Parent parent;
public Kid( Parent p ) {
parent = p; // Copies the *reference* to the parent, not the object itself.
}
}
在java中,你用new创建的每个对象实际上都是一个引用,即一个指针。所以只要用"新"来创造一切,你就会没事的。
public class Parent{
public Parent() { kid = new Kid(this) }
private Kid kid;
}
public class Kid{
public Kid(Parent parent){ this.parent = parent }
private Parent parent;
};
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- OOP 中的单成员指针
- OOP 和字符串指针的奇怪行为
- 指针 OOP 操作
- 将状态机的状态作为参数传递给函数指针C++ OOP
- java中的c++ OOP指针技巧
- OOP - 类成员指针