专栏首页MySQL从删库到跑路C++primer学习笔记(五)

C++primer学习笔记(五)

  • 简单说,类就是定义了一个新的类型和一个新的作用域。成员访问级别默认私有。在声明和定义处指定inline都是合法的。类的前向声明一般用来编写相互依赖的类。类定义以分号结束,之后可以跟对象列表。
  • mytye.func1().func2()想要这种形式,就必须返回*this的引用才能调用func2。成员函数是否为const等同于形参this是否const,所以可以重载。mutable用来声明数据成员可以修改【突破各种const的限制】。
  • 使用类外全局作用域的变量可以::var来获得。
  • 类中的const成员必须在初始化列表中初始化,无法再构造函数体内赋值。初始化const或引用类型或没有默认构造函数的类类型数据成员的唯一机会是构造函数的初始化列表【冒号开始,逗号分隔】。初始化顺序由定义顺序决定,而不是初始化列表顺序。
  • 友元:将非公有成员的访问权授予指定的类或函数。friend在类定义内部。友元引入的类名和函数(定义或声明)可以像预先声明的一样使用。
  • static成员函数没有this形参,可直接访问类的static成员,不能使用非static成员。
  • 静态数据成员属于一个类,而不属于类的各个对象。静态成员函数在所有对象建立之前或删除之后仍然使用。
  • 初始化时是否调用复制构造函数取决于是否有=【拷贝构造函数,复制也叫拷贝构造函数是用同一个类的一个对象初始化另一个对象,普通构造函数是用各种参数初始化一个类的对象】。构造函数如果是explicit必须严格按照定义使用构造函数,否则可以存在隐式转换。
  • 非引用形参将复制实参值,非引用return将复制return的东西。即使定义了其他构造函数,也会合成复制构造函数【能够复制类中的数组】。类成员有指针一般需要显示定义复制构造函数。
  • 声明而不定义成员函数是合法的,但是使用将导致链接失败。将复制构造函数声明为private可防止复制。定义了复制构造函数,也必须定义默认构造函数。
  • 重载赋值操作符=,隐含的第一个参数this。复制构造函数、赋值操作符、显示析构函数【虚空不算】一般同时出现。合成析构函数并不删除指针成员指向的对象。即使编写了自己的析构函数,合成析构函数仍然运行。
  • 默认构造函数不全,会调成员的默认构造函数,复制构造函数不全就不行了。
  • 使用计数是管理智能指针类的通用技术。
  • 重载操作符:保留字operator后面接需要定义的操作符符号,返回类型和参数表和其它函数一样。只能重载已有的操作符,只针对类类型,最好重载原本对类类型无意义的操作符。
  • 使用算法sort等时会假定一些操作符(<)存在,此时要为类型定义重载操作符。重载操作符如果是成员函数,左操作数必须是该类的对象【一定是this】。
  • 用函数或类操作某个类的数据可设置其为友元。== <的逻辑定义如果不一致,不定义<比较好。()是调用操作符,有这个的类称为函数对象,行为类似函数。函数对象作为算法实参,比函数更灵活。标准库中有几个函数对象。
  • 函数对象的函数适配器:绑定器 bind1st将给定值绑定到二元对象函数第一个实参 bind2nd 第二个实参。 求反器 not1 not2 count_if find_if
  • 转换操作符:operator type() type表示内置类型名,类类型名或别名。【operator int(); //重载类型转换操作符,可以做到int i; Integer it; i = it; //it直接转为int类型,然后赋值给i 例如:Integer::operator int() {return data;data是Integer的私有成员}】

本文分享自微信公众号 - MySQL从删库到跑路(gh_574fe5c6adf5),作者:小当家

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JD-GUI反编译jar包为Java源代码

    程序员难免要借鉴其他java工程的代码。可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成...

    震八方紫面昆仑侠
  • storm安装教程

    Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。按照storm作者的说法,Storm对于实时计算的意义类似于Hadoop...

    震八方紫面昆仑侠
  • C++primer学习笔记(四)

    震八方紫面昆仑侠
  • 【C++】构造函数与析构函数

    原因:程序中对象的创建和销毁是一个非常特殊的事情,有编译器来调用它们来完成,而这里的构造函数和析构函数便是创建和销毁的两个函数,它们是作为钩子函数来被编译器调用...

    灰子学技术
  • Linux Make(Makefile)由浅入深的学习与示例剖析

    经过长时间学习和研究linux GNU make工程管理器 ,现在把学习心得与大家分享一下,希望本文能教会您一些有用的东西。

    阳光岛主
  • kotlin中数据类重写setter getter的正确方法

    在开发过程中,经常会创建一些数据里,其没有任何逻辑功能,仅仅来用来保存数据。在Kolin中,将这些类统一称为数据类,用关键字data标记。

    砸漏
  • 企业视频远程办公会议通话系统EasyRTC在Windows2012部署运行出现“计算机中丢失VCRUNTIME140.dll”如何解决?

    近期我们的EasyRTC进行了新的版本修正,开发了MCU版本和SFU版本(MCU与SFU方案的区别是什么),小规模企业用户可选MCU方案,大型会议现场可选SFU...

    EasyNVR
  • .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现表单设计

    其中包括Height属性(列标题高度)、FontSize属性(列标题文本大小)、BackColor属性(列标题背景颜色)和ForeColor属性(列标题文本颜色...

    Amanda.li
  • .Net语言 APP开发平台——Smobiler学习日志:如何在手机上显示类似EXCEL表格

    其中包括Height属性(列标题高度)、FontSize属性(列标题文本大小)、BackColor属性(列标题背景颜色)和ForeColor属性(列标题文本颜色...

    Amanda.li
  • 【案例学习】Skycatch AI为采矿和建筑公司提供数据,以提高业务效率

    Skycatch,这家总部位于旧金山的公司一直在向一些世界上最大的矿业和建筑公司提供基于AI的自动无人机测量和分析平台。这家初创公司已经筹集了4700万美元的资...

    GPUS Lady

扫码关注云+社区

领取腾讯云代金券