当前位置: 首页 > wzjs >正文

建聊天网站店铺详情页设计模板

建聊天网站,店铺详情页设计模板,wordpress更新文章收录,长沙装修在C中,类的默认成员函数是编译器自动提供的特殊函数,它们管理着对象的生命周期和资源。四大核心默认成员函数:构造函数、析构函数、拷贝构造函数和赋值重载函数 一、构造函数 1.1 作用 构造函数是对象初始化的核心机制。它的主要任务是在对…

在C++中,类的默认成员函数是编译器自动提供的特殊函数,它们管理着对象的生命周期和资源。四大核心默认成员函数:构造函数、析构函数、拷贝构造函数和赋值重载函数

一、构造函数

1.1 作用

构造函数是对象初始化的核心机制。它的主要任务是在对象创建时为其数据成员赋初值。

1.2 默认行为

  • 若未显式定义,编译器会生成一个无参构造函数(默认构造函数),但仅负责初始化,不进行赋值。
  • 若定义了任意构造函数,编译器将不再生成默认构造函数。
  • 构造函数支持函数重载,但需避免无参构造函数与全缺省构造函数的歧义。
    class Date {
    public:// 无参构造函数Date() {_year = 2024;_month = 6;_day = 13;}// 带参构造函数Date(int year, int month, int day) {_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;
    };int main() {Date d1;          // 调用无参构造函数Date d2(2025, 6, 13); // 调用带参构造函数return 0;
    }

    二、析构函数

    2.1 作用

    析构函数用于清理对象占用的资源(如动态内存等)。对象销毁时自动调用。

    2.2 默认行为

  • 若未显式定义,编译器生成默认析构函数,仅负责对象销毁,不处理资源。
  • 若类包含动态资源(如new分配的内存),必须自定义析构函数以避免内存泄漏。
    class Stack {
    public:Stack() {_a = new int[100];_top = 0;_capacity = 100;}~Stack() {delete[] _a;  // 释放动态数组_a = nullptr;_top = _capacity = 0;}private:int* _a;int _top;int _capacity;
    };int main() {Stack st; // 对象销毁时自动调用析构函数return 0;
    }

    2.4 注意事项

  • 析构函数不能重载,一个类只能有一个析构函数。
  • 析构顺序:后创建的对象先析构(与构造顺序相反)。

    三、拷贝构造函数

    3.1 作用

    拷贝构造函数用于创建一个新对象,其初始状态与另一个已存在的对象完全相同。默认行为是浅拷贝/值拷贝(逐字节复制)。

    3.2 默认行为

  • 若未显式定义,编译器生成默认拷贝构造函数,执行浅拷贝。
  • 若类包含指针成员,浅拷贝会导致多个对象共享同一块内存,可能引发双重释放
  • class MyClass {
    public:MyClass(int value) {_data = new int(value);}// 自定义深拷贝构造函数MyClass(const MyClass& other) {_data = new int(*other._data); // 为指针分配新内存}~MyClass() {delete _data;}private:int* _data;
    };int main() {MyClass obj1(10);MyClass obj2 = obj1; // 调用拷贝构造函数return 0;
    }

    3.4 注意事项

  • 浅拷贝 vs 深拷贝
    • 浅拷贝:复制指针地址,导致多个对象共享资源。
    • 深拷贝:为指针分配新内存,并复制数据。
  • 拷贝构造函数的参数必须是const引用:防止修改源对象,并允许从const对象拷贝。

    四、赋值重载函数

    4.1 作用

    赋值重载函数用于将一个对象的值赋给另一个已存在的对象。默认行为是成员逐一赋值(浅拷贝)。

    4.2 默认行为

  • 若未显式定义,编译器生成默认赋值运算符,执行浅拷贝。
  • 若类包含动态资源,必须自定义赋值运算符以避免资源泄漏。
    class MyClass {
    public:MyClass(int value) {_data = new int(value);}// 自定义赋值运算符(深拷贝)MyClass& operator=(const MyClass& other) {if (this != &other) { // 防止自赋值delete _data;      // 释放原有资源_data = new int(*other._data); // 分配新资源}return *this;}~MyClass() {delete _data;}private:int* _data;
    };int main() {MyClass obj1(10);MyClass obj2(20);obj2 = obj1; // 调用赋值运算符return 0;
    }

    4.4 注意事项

  • 赋值运算符需返回对象引用。
  • 防自赋值:在赋值前检查是否为自身赋值。
  • 资源管理:在赋值前释放原有资源,避免内存泄漏。
http://www.dtcms.com/wzjs/793253.html

相关文章:

  • 太原网站建设设计网站第三方统计工具
  • 大唐工作室 网站制作深圳网站设计制作
  • 网站未及时续费博客网站的建设流程
  • 长春网站优化方式网站系统建设技术服务费
  • 广东网站建设报价如何阿里云服务器创建多个网站吗
  • 怎样把建好的网站上传到互联网全网网站推广
  • wordpress添加分类文档网站建设优化
  • 岳阳做网站wordpress上传主题没图片
  • ps学做翻页相册网站房地产互联网推广
  • 可以做配音兼职的网站关键词搜索引擎排名查询
  • 著名的设计企业网站淘宝网站经营与建设论文
  • 清河网站建设公司郑州市制作网站的公司
  • 建设网站需要几个人完成天华建筑设计公司官网
  • 北堂网站制作wordpress后台密码忘记怎么办
  • 网站数据库有什么用大一期末网页设计作业
  • 建站软件2017做个商城网站怎么做便宜吗
  • 常熟响应式网站单位网站建设程序
  • 源码站外贸平台补贴政策
  • 东莞英文网站制作我的家乡网站建设模板
  • 网站建设服务公司选哪家比较好?哪里接单做网站
  • 建设一个网站需要哪些材料伍佰亿网站建设
  • 网站的建设主题济南网站建站公司
  • 帮别人做钓鱼网站犯法吗中山工商注册公司
  • 重庆自助建站网站wordpress注册插件
  • 网页制作免费的素材网站开发者官网
  • 给孩子做衣服的网站中国建设银行官网个人网上银行登录
  • 星河东莞网站建设wordpress nofollow插件
  • 织梦dedecms微信微网站模板服装鞋帽 网站建设
  • 成都建设网站高级工程师查询互联网营销公司有哪些
  • 网页设计制作一个餐饮网站专业网站快速