C++作业2018-04-13

一,如何将类A和类B相互引用

class A.h

#include "B.h"
class A
{
    int i;
    B b;
}

class B.h

class A;
class B
{
    int i;
    A *a;
}

同时在B.cpp要有如下形式

#include "A.h"
B::B()
{
    ……
}

方法:其中一个类的头文件中要包含另一个的头文件,另一个对对方进行前置声明



二,深拷贝的例子

#include <iostream>
using namespace std;
class C{
private:
    int a;
public:
  C(int b,char* cstr)          //构造函数
  {
   a=b;
   str=new char[b];
   strcpy(str,cstr);
  }
  C(const C& D)               //拷贝构造函数
  {
   a=D.a;
   str=new char[a];           //深拷贝
   if(str!=0)
    strcpy(str,D.str);
  }
  void Show()
  {
   cout<<str<<endl;
  }
  ~C()
  {
   delete str;
  }
private:
  int a;
  char *str;
};

int main()
{
 C A(10,"Hello!");
 C B=A;
 B.Show();
 return 0;
} 

三,如何用标记拷贝

四,多次调用构造函数主函数结束后析构释放的顺序

#include <iostream>
using namespace std;
class A
{
public:
    int a,b;
    A(int c,int d)
    {
        a=c;
		b=d;
        cout<<"Con~1"<<endl;
    }
    A(A& aa)
    {
        a=aa.a;
        cout<<"Con~2"<<endl;
    }
	~A(){cout<<"Des~"<<b<<endl;}
    void out()
    {
        cout<<a<<endl;
    }
};
int main()
{
	A aaa(10,1);
    A bbb(10,2);
	A ccc(10,3);
    return 0;
}
五,两个a的区别

一个是对象a,一个是参数a

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页