《算法导论》说用于表示数组或对象的变量被看作是指向表示或对象数据的一个指针,对于某个对象x的所有域f,赋值y<--x,就是f[y]=f[x]。若f[x]<--3,则不仅是f[x]=3,同时f[y]=3,换言之在赋值y<--x后x,y指向同一个对象。
#include<iostream>
using namespace std;
int main(){
int a=3,b=0;
b=a;
a++;
cout<<a<<'\t'<<b<<endl;
return(0);
}//输出的是4 3。他们并不是表示数组或对象的变量。
#include<iostream>
using namespace std;
class object{
public:
int var;
object(int value){var=value;}
};
int main(){
object a(3),b(0);
b=a;
a.var=4;
cout<<a.var<<'\t'<<b.var<<endl;
return(0);
}//输出4 3与说法矛盾
#include<iostream>
using namespace std;
int main(){
int a[3],b[3];
a[0]=1;
a[1]=2;
a[2]=3;
b=a;//数组不能赋值
for(int i=0;i<3;++i)
cout<<a[i]<<'\t'<<b[i]<<endl;
return(0);
}
那么请问这两个例子应该如何举
回复人: 阿荣 (状元) 2007-1-24 17:52:12
它说得那些只是在某些特定环境下的理论效果,并不能在所有语言中应用.它这里所说的概念,基本上对应C++的指针,和你理解的不一样
回复人: 阿荣 (状元) 2007-1-24 17:53:04
个人感觉,他对对象的定义对于C++而言是错误的
回复人: 周星星 (榜眼) 2007-1-24 17:55:37
也许说引用更恰当
回复人: 阿荣 (状元) 2007-1-24 17:59:24
实际上无论引用和指针都无法严格和他对应.我不清楚讲算法的为什么来搞这种定义?完全无法和所有语言对应
回复人: szhoftuncun (书童) 2007-1-24 18:23:49
Re:也许说引用更恰当
举个例子,我不太明白你们说什么?
回复人: szhoftuncun (书童) 2007-1-24 20:02:05
Re:变量名的问题
参数用值传递的方式传给过程:过程接收参数的副本,若它对某个参数赋值,则这个过程对调用过程(1.这里是指调用过程的那个过程吗?我想是的,也应该是这样的)是不可见的。当传递一个对象时,只时拷贝指向对象的指针(2.不解决上面变量名的问题,那这里又有问题了),而不拷贝其各个域(3.这个域指的是什么?)。如:x<--y对调用过程时不可见的,但赋值f[x]<--3是可见的。
回复人: 阿荣 (状元) 2007-1-24 23:35:03
这么晦涩而且也不怎么通用的书还是不要这么认真的读了
回复人: 阿荣 (状元) 2007-1-24 23:36:28
这种晦涩的理论不适于学习语言,你不要指望能用什么例子来描述你说的话,它上面的话不完全适用于C++
回复人: 阿荣 (状元) 2007-1-24 23:38:02
个人建议你立刻换书,
回复人: hpho (秀才) 2007-1-24 23:53:10
若用JAVA的话是说得通的.
C++是分对象实体和指向对象的指针.所以会有深浅拷贝.
回复人: 周星星 (榜眼) 2007-1-25 9:19:59
因为JAVA中一切都是指针
回复人: Iforgot (秀才) 2007-1-25 9:21:22
不能说指针,最好说引用,或引用和指针的结合体。——java里关于垃圾收集机制里有一堆关于它的引用的概念。
回复人: 周星星 (榜眼) 2007-1-25 9:27:29
说引用也说不过去,反正就那个意思
回复人: szhoftuncun (书童) 2007-1-25 9:29:20
Re:这种晦涩的理论不适于学习语言,你不要指望能用什么例子来描述你说的话,它上面的话不完全适用于C++
呵呵,不是为了学语言,就是为了学算法,只不过想用语言来验证一下,多谢各位赐教。分就给星星吧
回复人: 阿荣 (状元) 2007-1-25 10:04:47
你给了?
回复人: szhoftuncun (书童) 2007-1-25 10:13:05
Re:你给了?
这个给分系统不太会用,vchelp网的比较清楚,呵呵,不知道给谁
参数用值传递的方式传给过程:过程接收参数的副本,若它对某个参数赋值,则这个过程对调用过程(1.这里是指调用过程的那个过程吗?我想是的,也应该是这样的)是不可见的。当传递一个对象时,只时拷贝指向对象的指针(2.不解决上面变量名的问题,那这里又有问题了),而不拷贝其各个域(3.这个域指的是什么?)。如:x<--y对调用过程时不可见的,但赋值f[x]<--3是可见的。