美文网首页
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课,构造函数,虚构函数

    0 先上代码 class person{ private: char* name; int age; char* ...

  • C++:面向对象基础

    构造函数 C++中有三种构造函数:默认构造函数,有参构造函数,拷贝构造函数 类对象的初始化 括号法//默认构造函数...

  • [C++之旅] 10 构造函数

    [C++之旅] 10 构造函数 构造函数的特点 构造函数在对象实例化时被自动调用 构造函数与类同名 构造函数没有返...

  • scala学习笔记-构造函数

    scala的构造函数分为主构造函数和辅助构造函数 【辅助构造函数】比较容易理解,它们同C++和Java的构造函数十...

  • windows逆向3

    VC 程序内存和编译的一些特征C++ 构造函数C++ 成员函数C++ 析构函数C++ 全局对象的构造C++ 全局对...

  • C++ 构造过程

    构造函数 C++中每个类必须有一个构造函数,如果用户没有自行编写构造函数,则C++会自动提供一个无参数的构造函数,...

  • C++ 多态性 虚函数、抽象类(二)

    注意:本文中代码均使用 Qt 开发编译环境 在C++中不能声明虚构造函数,但是可以声明虚析构函数。析构函数没有类型...

  • c++面向对象-构造、析构、初始化列表

    构造函数 构造函数是指创建对象的时候,会调用的函数。C++构造函数可以重载,指针或者对象均可调用构造函数。 析构函...

  • [字符串] 自己实现一个string类(一)

    C++类一般包括:构造函数,拷贝构造函数,赋值构造函数和析构函数四大函数。 在上面的赋值构造函数中,都是先dele...

  • c++构造函数,析构函数,调用顺序

    最近,在看c++,聊一个简单的话题吧。构造函数,析构函数,及调用顺序。 构造函数, 构造函数,析构函数,如上代码所...

网友评论

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

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