教你如何区分构造函数、普通成员函数、拷贝构造函数以及析构函数

目录

一、构造函数

二、普通成员函数

三、拷贝构造函数

四、析构函数


在C++中,构造函数、普通成员函数、拷贝构造函数和析构函数是类成员函数的几种类型。

一、构造函数

构造函数用于创建和初始化对象,其函数名与类名相同,没有返回类型。在实例化对象时,构造函数会自动被调用,并初始化对象的成员变量。例如,下面是一个简单的构造函数的示例:

class Person { // 定义类Person
public:
    Person() { // 默认构造函数,初始化age为0,name为"Unknown"
        age = 0;
        name = "Unknown";
    }

    Person(int a, string n) { // 带参数的构造函数,初始化age和name
        age = a;
        name = n;
    }

private:
    int age; // 成员变量age
    string name; // 成员变量name
};

上述代码中,Person()是默认构造函数,Person(int a, string n)是带参数的构造函数。在实例化Person对象时,如果没有传递参数,则默认调用Person()构造函数;如果传递了参数,则调用Person(int a, string n)构造函数。

二、普通成员函数

普通成员函数是一个普通的函数,它可以访问类中的成员变量和成员函数,但不包含 static 关键字。例如,下面是一个简单的普通成员函数的示例:

// 定义了一个名为 Person 的类
class Person {
public:
    // 定义了一个公有的成员函数 setName,它有一个参数 n,类型为 string
    void setName(string n) {
        // 在成员变量 name 中存储参数 n 的值
        name = n;
    }

private:
    // 定义了一个私有的成员变量 name,类型为 string
    string name;
};

上述代码定义了一个名为Person的类,该类具有一个公有的成员函数setName,用于设置类的成员变量name的值。在该类的私有成员中定义了一个成员变量name,用于存储Person对象的名称。

三、拷贝构造函数

拷贝构造函数用于复制一个对象,其函数名与类名相同,并且参数是一个指向该类对象的常引用。拷贝构造函数的作用是在创建一个新的对象时,以现有对象的值初始化它。例如,下面是一个简单的拷贝构造函数的示例:

class Person {                      // 定义 Person 类
public:
    Person(const Person& other) {   // 拷贝构造函数,参数为指向该类对象的常引用
        age = other.age;            // 复制现有对象的 age 成员变量值
        name = other.name;          // 复制现有对象的 name 成员变量值
    }

private:
    int age;                        // 年龄成员变量
    string name;                    // 姓名成员变量
};

上述代码定义了一个名为Person的类,其中包括一个拷贝构造函数和两个私有成员变量。拷贝构造函数用于复制一个Person对象,其参数为指向该类对象的常引用。在构造新对象时,拷贝构造函数会复制现有对象的成员变量值,并将它们赋值给新对象的对应成员变量。agename成员变量分别表示人物的年龄和姓名。

四、析构函数

析构函数是用于销毁对象的函数,其函数名与类名相同,但以 ~ 开头,并且没有返回类型。析构函数在对象生命周期结束时自动调用,用于清理对象使用的资源。例如,下面是一个简单的析构函数的示例:

class Person {    // 声明一个类Person
public:
    ~Person() {   // 定义析构函数,以 ~ 开头,没有返回类型
        cout << "Person object is destroyed" << endl;  // 输出一条消息,表示对象被销毁
    }

private:
    int age;      // 声明一个私有成员变量age
    string name;  // 声明一个私有成员变量name
};

上述代码中,~Person()是析构函数,当Person对象被销毁时,会自动调用该函数,输出一条销毁对象的消息。

猜你喜欢

转载自blog.csdn.net/qq_50635297/article/details/130030710