美文网首页
C++学习第6课,构造函数,虚构函数

C++学习第6课,构造函数,虚构函数

作者: Mr小熊_1da7 | 来源:发表于2019-06-09 23:44 被阅读0次

    0 先上代码

    class person{

    private:

    char* name;

    int age;

    char* work;

    public:

    person()

    {

    cout << "person()"<<endl;

    name = NULL;

    age = 0;

    work = NULL;

    }

    person(char* name,int age=10,char* work = "none")

    {

    cout << "person(char* ,int age=10,char* work = )"  << endl;

    this->name = new char[strlen(name)+1];

    strcpy(this->name, name);

    this->age = age;

    this->work = new char[strlen(work)+1];

    strcpy(this->work, work);

    }

    ~person()

    {

    if(this->name)

    delete this->name;

    if(this->work)

    delete this->work;

    }

    void printfinfo(void)

    {

    cout << "name = " << name << ",age = " << age << endl;

    }

    };

    1 构造函数

    person()和person(char* name,int age=10,char* work = "none")都是构造函数。

    2 构造函数的调用

    在类被定义时,内部变量定义之后,执行构造函数。

    3 构造函数如何使用

    person per;//情况1:调用无参数的构造函数

    person per1("xiaoming");//情况2:调用有参数的构造函数,不过age,和work参数为默认值

    person *per2 = new person;//情况3:以new的方式定义类,调用无参数的构造函数    

    person *per3 = new person[2];//情况4:定义一个类数组

    person *per4 = new person("liuwu",10,"student");//情况5,以new的方式定义类,调用有参数的构造函数    

    person *per5 = new person("zhangsan",10);//情况6,以new的方式定义类,调用有参数的构造函数    

    4 虚构函数

    ~person()为虚构函数,有且只有一个,无参数

    5 虚构函数的调用

    虚构函数在类被销毁的前一刻被调用。

    *在方法体内定义的类,在退出该方法时,被销毁。

    *或是调用delete 来删除new出来的结构体 delete per;

    Person *per = new Person;

    6 类包含类的类

    class Student{

    private:

        char*     name;

        int         age;

        char*     work;

    public:

        person father;

        person mother;

        void Student(){}

        void Student(char* name, int age, char* work = "none")

        {

            cout << "Student(char* name, int age)"<< endl;

            this->name = new char[strlen(name) + 1];

        }

    }

    定义时,先运行内部类的构造函数,再运行自己的构造函数;

    销毁时,先运行自己的虚构函数,再运行内部类的虚构函数;

    7 构造函数自带参数初始功能


    class Port{

    private:

    int x;

    int y;

    public:

    Port(){}

    Port(int x,int y):y(y),x(x)

    {

    cout << "Port!" << endl;

    }

    void printinfo(void)

    {

    cout << "x = "<<x<<", y = "<<y<< endl;

    }

    };

    int main()

    {

    Port po(1,2);

        po.printinfo();

        return 0;

    }

    结果为

    Port!

    x = 1, y = 2


    *这里Port(int x,int y):y(y),x(x)为构造函数,后面的:y(y),x(x),表示,this->y = 输入的y,this->x = 输入的x

    8 构造复制函数

    class Port{

    ……

    Port(const Port &per)//构造复制函数

    {

        x = per.x;

        y = per.y;

    }

    ……

    }

    该方法用于

    ①Port a = b;②Port c(b);会调用Port(const Port &per)

    b也是Port类时。

    相关文章

      网友评论

          本文标题:C++学习第6课,构造函数,虚构函数

          本文链接:https://www.haomeiwen.com/subject/bluexctx.html