Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ 拷贝构造函数

作者:慢靈魂   发布日期:2025-09-30   浏览:22

#include <iostream>
#include <string>

class MyClass {
public:
    // 默认构造函数
    MyClass(const std::string& value) : data(value) {
        std::cout << "Constructor called for: " << data << std::endl;
    }

    // 拷贝构造函数
    MyClass(const MyClass& other) : data(other.data) {
        std::cout << "Copy constructor called for: " << data << std::endl;
    }

    // 析构函数
    ~MyClass() {
        std::cout << "Destructor called for: " << data << std::endl;
    }

    // 成员函数,用于打印数据
    void printData() const {
        std::cout << "Data: " << data << std::endl;
    }

private:
    std::string data;
};

int main() {
    MyClass obj1("Original Object");

    // 调用拷贝构造函数
    MyClass obj2 = obj1;

    obj1.printData();
    obj2.printData();

    return 0;
}

解释说明

  1. 默认构造函数MyClass(const std::string& value) 是类 MyClass 的构造函数,它接受一个字符串参数并初始化成员变量 data。同时,它会输出一条消息表示构造函数被调用。

  2. 拷贝构造函数MyClass(const MyClass& other) 是拷贝构造函数,当创建一个新对象并用另一个对象进行初始化时,会调用这个构造函数。它会将传入的对象的 data 成员复制到新对象中,并输出一条消息表示拷贝构造函数被调用。

  3. 析构函数~MyClass() 是析构函数,在对象生命周期结束时自动调用,用于清理资源。这里它只是输出一条消息表示析构函数被调用。

  4. 成员函数printData() 用于打印成员变量 data 的值。

  5. 主函数

    • 创建了一个名为 obj1 的对象,调用默认构造函数。
    • 然后通过 MyClass obj2 = obj1; 创建了 obj2,这会调用拷贝构造函数,将 obj1 的内容复制给 obj2
    • 最后分别调用 obj1obj2printData() 函数来显示它们的数据。

通过这个例子,你可以看到拷贝构造函数在对象复制时的作用。

上一篇:c++基本语法

下一篇:c++ 优先队列

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++格式化字符串

c++ orm框架

队列c++

c++freopen怎么用

进制转换c++代码

c++ 获取系统时间

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站