第六周阅读程序

来源:互联网 发布:c语言生成1-20随机数 编辑:程序博客网 时间:2024/05/18 11:35

(1)

#include <iostream>using namespace std;class A{public:    A()    {        cout<<"A";    }    ~A()    {        cout<<"~A";    }};class B{    A *p;public:    B()    {        cout<<"B";        p=new A();    }    ~B()    {        cout<<"~B";        delete p;    }};int main(){    B obj;    return 0;}


运行结果:

(2)

#include <iostream>using namespace std;class MyClass{public:    MyClass(int x=0):i(x)    {        cout<<"C"<<i;    }    ~MyClass()    {        cout<<"D"<<i;    }    void SetValue(int val)    {        i=val;    }    int GetVal()    {        return i;    }private:    int i;};int main(){    MyClass *p[3];    int i;    for (i=0; i<3; i++)    {        p[i]=new MyClass(i);        p[i]->SetValue(p[i]->GetVal()*2);    }    for (i=0; i<3; i++)        delete p[i];    cout<<endl;    return 0;}


运行结果:

(3)

#include <iostream>using namespace std;class B{public:    B()    {        cout<<"default constructor"<<endl;    }    ~B()    {        cout<<"destructed"<<endl;    }    B(int i):data(i)    {        cout<<"constructed: " << data <<endl;    }private:    int data;};B Play(B b){    return b ;}int main(){    B temp = Play(5);    return 0;}


运行结果:

(4)

#include <iostream>using namespace std;class example{public:    example()    {        cout<<"Default Constructing! "<<endl;    }    example(int n)    {        i=n;        cout<<"Constructing: "<<i<<endl;    }    ~example()    {        cout <<"Destructing: "<<i<<endl;    }    int get_i()    {        return i;    }private:    int i;};int sqr_it(example o){    return o.get_i()* o.get_i();}int main(){    example x(10);    cout<<x.get_i()<<endl;    cout<<sqr_it(x)<<endl;    return 0;}


运行结果:

(5)

#include <iostream>using namespace std;class AA{public:    AA(int i,int j)    {        A=i;        B=j;        cout<<"Constructor\n";    }    AA(AA &obj)    {        A=obj.A+1;        B=obj.B+2;        cout<<"Copy_Constructor\n";    }    ~AA()    {        cout<<"Destructor\n";    }    void print()    {        cout<<"A="<<A<<",B="<<B<<endl;    }private:    int A,B;};int main(){    AA a1(2,3);    AA a2(a1);    a2.print();    AA *pa=new AA(5,6);    pa->print();    delete pa;    return 0;}


运行结果:

学习心得:

在运行程序之前自己先写了一下程序的结果,但是跟运行结果不一样,还是对析构函数不太熟悉。

0 0
原创粉丝点击