博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拷贝构造和拷贝赋值、静态成员(static)、成员指针、操作符重载(day06)
阅读量:5345 次
发布时间:2019-06-15

本文共 1595 字,大约阅读时间需要 5 分钟。

十七 拷贝构造和拷贝赋值1 浅拷贝和深拷贝1)如果一个类中包含指针形式的成员变量,缺省的拷贝构造函数只是复制了指针变量的本身,而没有复制指针所指向的内容,这种拷贝方式称为浅拷贝。2)浅拷贝将导致不同对象之间的数据共享,如果数据存放在堆区,可能会在析构时引发"double free"异常,因此就需要自己定义一个支持复制指针指向的内容的拷贝构造函数,即深拷贝。2 在C++类中会提供一个缺省的拷贝赋值运算符函数,完成两个对象直接的赋值操作。但是它和缺省拷贝构造函数类似,也是浅拷贝,为了得到深拷贝赋值的效果,必须自己定义拷贝赋值运算符函数 s2 = s3;//s2.operator=(s3) 类名& operator=(const 类名& that){    if(this != &that){
//1)防止自赋值 2)释放旧资源 3)分配新资源 4)拷贝新数据 } return *this;//5)返回自引用 } 十八 静态成员(static)1 静态成员变量class 类名{ static 数据类型 变量名;//声明静态成员变量};数据类型 类名::变量名 = 初值;//定义和初始化1)静态成员变量不属于对象,但是可以通过对象去访问它。2)不能在构造函数中定义和初始化,需要在类的外部单独的定义和初始化3)静态成员变量内存在全局区;4)静态成员变量可以通过类名直接访问 类名::静态成员变量5)静态成员变量在类所创建多个对象之间是共享的2 静态成员函数class 类名{ static 返回类型 函数名(形参表){函数体}};1)静态成员函数没有this指针,也没有const属性2)可通过"类名::"直接访问,也可以通过对象访问注:静态成员函数只能访问静态成员3 单例模式:一个类只允许创建唯一的对象1)禁止在类的外部创建对象:私有化构造函数2)类的内部维护唯一对象:静态成员变量3)提供访问单例对象的方法:静态成员函数4)创建方式: --》饿汉式:单例对象无论用或不用,程序启动即创建。 --》懒汉式:单例对象在用的时候再创建,不用即销毁。eg:class A{public: static A& get(void){ return m_a; }private: A(void); A(const A&); static A m_a;};===================十九 成员指针(了解)1 成员变量指针1)定义类型 类名::*成员指针变量名 = &类名::成员变量;2)使用 对象.*成员指针变量名; 对象指针->*成员指针变量名; ".*":成员指针解引用运算符 "->*":间接成员指针解引用运算符注:成员变量指针的本质是类中特定成员在对象中的相对地址。2 成员函数指针1)定义 返回类型 (*类名::成员函数指针)(形参表) = &类名::成员函数名;2)使用 (对象.*成员函数指针)(实参表); (对象指针->*成员函数指针)(实参表);==================二十 操作符重载eg:复数x+yi 3+4i(1+2i) + (3+4i) = 4+6i1 双目操作符1.1 运算类的双目操作符(L # R):+ - * /-->左右操作数可以是左值也可以是右值-->表达式结果是右值1)成员函数形式L#R的表达式会被编译器自动处理为L.operator#(R)的成员函数调用,该函数的返回值即为表达式的值。2)全局函数形式 1.2 赋值类的双目操作符练习:复习String类和单例模式实现

 

转载于:https://www.cnblogs.com/Kernel001/p/7729757.html

你可能感兴趣的文章
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>
Hangfire在ASP.NET CORE中的简单实现方法
查看>>
Algorithm——何为算法?
查看>>