我实现了这里描述的复制构造函数.但问题仍然是当我更新时route_copy,则应用相同的更新route.所以,我不明白我的代码有什么问题?
public class Route implements Comparable<Route> {
private List<Site> sites;
public Route()
{
sites = new ArrayList<Site>();
}
public Route(List<Site> sites)
{
this.sites = sites;
}
/**
* Copy constructor
*/
public Route(Route r) {
this(r.sites);
}
public void deleteSite(Site s) {
this.sites.remove(s);
}
}
public processData(Route route)
{
Route route_copy = new Route(route);
Site s = selectSite(route_copy);
route_copy.deleteSite(s); // !!! now 'route' does not contain an element 's'
}
Run Code Online (Sandbox Code Playgroud) 我有以下情况.我的目标是使a和b这样两者都指向相同的记忆.但条件是它们都是指针.我该怎么做?
struct myStruct
{
struct anotherStruct* anoStrct;
};
main()
{
struct myStruct *a=( struct myStruct*)malloc(sizeof( struct myStruct));
struct myStruct *b=( struct myStruct*)malloc(sizeof( struct myStruct));
a=b;
}
Run Code Online (Sandbox Code Playgroud) 以下关于Java的声明是假的吗?
在Java中,当一个类或对象的实例被指定为方法的参数时,正在创建该对象的副本
我知道Java中的函数是按值传递的,这意味着正在制作对象的副本?
但与此同时,如果java对象是引用并且你传递了一个引用,这不同于实际数据的副本不是吗?
如果你传递一个引用,当重新分配引用时,对象将被重新分配,使得Java传递引用不是按值传递的?
如你所见,我对此非常困惑