#include <iostream>#include<stdlib.h>using namespace std;class List{ int a[10],n; public: List(int a[10],int n) { List::n=n; for(int i=0;i<n;i++) List::a[i]=a[i]; } void Copy(List L) { if(this ==&L) cout<<

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 05:41:40
#include <iostream>#include<stdlib.h>using namespace std;class List{ int a[10],n; public: List(int a[10],int n) {    List::n=n;    for(int i=0;i<n;i++)        List::a[i]=a[i]; } void Copy(List L) {      if(this ==&L)    cout<<
xV]OH+CZ;I_Ǽc[If7ٖER ǪhEUU7c8Z=sϽw=3Θ}64jCpՕu] R펫Uq`5ݱeUԪ8 w@C~LJ\ _!4:j7 N``)wG@|EC$?YP-{"P* 5[*$pô7s˿^ՀiBB 2$aSql))N˔ IAP2 lgZ ĸ su+YyJaL ##32d׫0MŴm(Q3{cԪi fMmiM9{9וCTz C;Ńv|9s*%iڃA{XfJ#W>0{s "Y_SV+1ynp&*OMJGS*P<%Pbm;B9OFbF"i3W{?zF k荱冣GÄK]wuбH>k〜['x~ 8uth.gd+ЮXdjjr?W&[;4sY2Ӹ"#U9^,ȲFA)̨9a,9shV`EM. .BSѿ W=.[y . O JAQdtUdyAF.X}o6K=罓`E=:K }:hvtv: :SӝF/qxO+^ ;gAkD͜+4 A[*.cLns-c}GtD}}/^g;DKb|ESk}>xsD#Dkx[;^0nmwf ssaO!+LZ҉ ^|Eˋ ?uj/'~5}D^k/_);[!:~C݉qNi>211"S9P Q!/$9L᥿),9yMr .X

#include <iostream>#include<stdlib.h>using namespace std;class List{ int a[10],n; public: List(int a[10],int n) { List::n=n; for(int i=0;i<n;i++) List::a[i]=a[i]; } void Copy(List L) { if(this ==&L) cout<<
#include <iostream>
#include<stdlib.h>
using namespace std;
class List
{
 int a[10],n;
 public:
 List(int a[10],int n)
 {
    List::n=n;
    for(int i=0;i<n;i++)
        List::a[i]=a[i];
 }
 void Copy(List L)
 {
   
   if(this ==&L)
    cout<<"Same!no copy!\n";
   else
    {
      cout<<&L<<','<<this<<endl;
      n=L.n;
      for(int i=0;i<n;i++)
      a[i]=L.a[i];
      cout<<"Different!copied!\n";
    }
 }
  void show()
  {
    for(int i=0;i<n;i++)  
    {  cout<<a[i]<<',';
      
    } 
      cout<<endl;
  } 
};
int main()
{
int a1[10]={1,2,3},a2[10]={4,5,6,7,8};
List L1(a1,3),L2(a2,5);
L1.show();
L2.show();
L2.Copy(L1);
L1.show();
L2.show();
L1.Copy(L1);
L2.Copy(L2);
L1.show();
L2.show();
\x05system("pause");
\x05return 0;
}

#include <iostream>#include<stdlib.h>using namespace std;class List{ int a[10],n; public: List(int a[10],int n) { List::n=n; for(int i=0;i<n;i++) List::a[i]=a[i]; } void Copy(List L) { if(this ==&L) cout<<
看了一下你的程序 你的疑问应该就是出在画红线的部分了吧
在你的想法中
L1.Copy(L1);
L2.Copy(L2);
这两个调用 在copy函数中
if(this ==&L)
这个判断应该是成立的 但事实上 打印了Different!copied!
原因是由于传参数的时候 除非是引用做参数 否则都会做一个临时变量 把原始的实参传给临时变量,然后在函数中操作的也是这个临时变量 所以地址会不同
修改方式 改为引用传参数即可
void Copy(List L)
修改为
void Copy(List &L)
这样的打印变成
1,2,3,
4,5,6,7,8,
0xbffbf694,0xbffbf668
Different!copied!
1,2,3,
1,2,3,
Same!no copy!
Same!no copy!
1,2,3,
1,2,3,