GeekBand第一周学习笔记

Class member Modifiers(类成员修饰词)

  public(公有):可被任何函数及类访问

  private(私有):无法被非友元的外部函数及类访问;

  protected(保护):只能够被自身及子类访问;

  friend(友元):修饰非操作类成员,可将外部函数或类指定为操作类的友元函数(类),友元函数(类)中可直接访问操作类中的private成员.

(PS:class的objects<实例>互为friends<友元>)


Class with pointer member(s)

  class按有无成员指针可分为Class with pointer member(s)与Class without pointer member(s)两种,前者成员指针如在使用过程中新分配了内存并在类生命周期结束后没有pointer指向这个内存遍需要在类的析构函数中释放这个内存,否则这片内存在程序结束前便会一直被占用,造成内存泄露.

(PS:pointer是数据占用内存的头地址,其大小与系统的索址范围相关32位系统中pointer占32bit即4Byte,64位则为8Byte)


Header file(头文件)防卫式声明

Heard file中需要进行防卫式声明宏定义,否则将可能导致头文件重复被包含,绝大多数编译器支持

#ifndef NAME
#define NAME
......
#endif

部分新版本编译器则支持 #pragma once 的写法.


inline function(内联函数)

  函数内联能够增加程序运行速度但会降低编译速度并增加目标程序总代码量适合用于频繁调用且代码短小的函数.

  类结构体内声明并定义的函数将优先内联,class结构体外定义的函数则需要在声明前加上inline关键字,函数最终是否内联取决与函数实际代码量与编译器的判断.

( PS:函数内联实际为编译器将函数调用跳转替换为函数实际作用代码,与宏定义是两码事)


ctor(构造函数)与dtor(析构函数)

  ctordtor在类生命周期开始与结束时会各被调用且只会被调用一次,默认无代码的ctordtor分别执行类成员的内存分配与释放,ctor可以传入参数并重载,dtor则不行.

ctor通常指定为public,当无public的ctor时外部将无法显示的新建实例,可通过类中public的函数得到并限制实例的创建.

(PS:dtor通常用于释放成员指针指向内存)


pass by reference & return by reference

  传递与返回参数的&(引用)通常能够增加传递速度,相比传递任何实例时都只会传递实例的首地址并自动解引用.

(PS:当参数为指针类型时不能使用&)


operator overloading(操作符重载)

  操作符重载声明的方法有两种

    A:重载的操作符在类体中被声明,声明方式如同普通成员函数一样,只不过他的名字包含关键字operator,以及紧跟其后的一个c++预定义的操作符. class perason{  bool operator > (type right);...  }

    B:操作符重载实现为非类成员函数(全局函数)对于全局重载操作符,代表左操作数的参数必须被显式指定. bool operator > (type left,type right);

(PS:C++要求赋值=,下标[],调用(), 和成员指向-> 操作符必须被定义为类成员操作符.任何把这些操作符定义为名字空间成员的定义都会被标记为编译时刻错误.)

时间: 2024-10-11 00:19:37

GeekBand第一周学习笔记的相关文章

机电传动控制课程第一周学习笔记

机电传动课程第一周学习笔记 本周的学习内容主要是第一章绪论和第二章机电传动系统的动力学基础,结合课程学习和预习复习回顾内容如下: 1.绪论:学习了机电传动控制目的与任务.发展历程和我们该如何学习这门课程. 2.机电传动系统的动力学基础: a.运动方程式:对于单一拖动系统或者多拖动系统,在分析时一般都折算到一根轴(电动机轴)上,折算的基本原则是,折算前的多轴系统同折算后的单轴系统在能量关系上或功率关系上保持不变.而对于单 走拖动系统的运动方程式如下. b.判断TM/TL的符号:主要概括为三条:规定

linux入门-第一周学习笔记

Linux新手入门-第一周学习笔记 一.安装系统注意的问题 1.磁盘分区: 以分配给系统200G内存大小为例: (1)给 /boot 200M大小即可,由于/boot 仅存放内核相关启动文件.不需要给太大的分区. (2)给 / 50G大小,根用户下要存放很多的文件. (3)给/testdir 50G大小,这是我们做实验用到的文件. (4)给swap 4G大小,由于swap是交换分区,其大小推荐是内存的1.5倍~2.0倍 注意:CentOS6.8的文件系统为ext4,而CentOS7.2的文件系统

Linux第一周学习笔记(2)

Linux第一周学习笔记(2) 1.3认识Linux (1).什么是Linux Linux是一个操作系统,比如说微软的winodws.苹果电脑的masOS.早于Linux发行的unix: 我们平时使用的PPT.浏览网站.玩游戏这些都是需要操作系统的层面上来完成的: 也包括了我们现在手机使用的系统有三个版本一个是Andriod和苹果的Los以及微软的windows,Los其实也就是Unix系统而Andriod是Linux系统: 我们生活当中常用的一些网站.游戏.QQ.微信这些应用都是在Linux操

软件测试第一周学习笔记

软件测试学习随笔   WCX第一周软件测试的学习笔记 入门时从软件测试的方法入手,总结如下 软件测试的方法总结: 测试名称 测试内容 Black box黑盒测试 把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识.从软件的行为,而不是内部结构出发来设计测试. White box白盒测试 设计者可以看到软件系统的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择. Gray box.  灰盒测试 介于黑盒和白盒之间   是手动还是自动又可以分类 测试名称 测试内容 Manual

机电传动第一周学习笔记

时光如白驹过隙,新学期的第一周就结束了,第一周开的课就有机电传动控制,按老师的要求一步步完成学习任务.首先复习了老师上课所学的知识,许多知识点上课短时间内记得不是很清晰,自己课下温习一遍还是十分重要的.然后就是学习老师所给的PDF的前两节,这一看还是很慌的,因为有许多之前所学的知识,很多考完就忘却了,只好把工控的课本翻出来,对着把相关知识点都复习了一遍,看书的过程中有些问题还未弄懂,如稳定工作点的判定等.然后就是学习软件的使用了,这一项未能完成,本来已经装好了试用版也机会了,谁料突然电脑坏了,重

机电传动控制第一周学习笔记

这是对于第一周对这门课的学习的一个总结整理,首先来谈谈我对机电控制的一些看法吧.看了老师发下来的资料,现在的装备制造与自动化确实发展很快,但是同样存在很多需要解决,而且是亟待解决的问题.我们的机械制造已经不再是以前单纯的机械制造了,不再是仅仅只有单纯的机械,材料方面的知识内容的理解应用,而更多的加入了很多复杂的关联技术,各个学科的知识内容都交汇到一起来,机电控制就是其中之一,而且数字化信息化带来的交流竞争加剧引起制造产品生命周期越来越短,所以如何做好规划与控制对于现在和将来要成为工程师的人要求很

马哥教育面授班20-2第一周学习笔记1

第一周的学习主要是理论知识,了解掌握后为后面的知识打下一个良好的基础. 计算机基础计算机系统硬件主机核心设备:中央处理器CPU(运算器ALU.控制器CU):存储器:ROM.RAM主机其他设备:存储(硬盘.软盘.光盘.usb):输入输出设备(键盘.鼠标.打印机.扫描仪.显示器):其他:调制解调器.光猫软件系统软件:操作系统.程序语言处理系统.数据库.驱动程序应用软件:通用软件(办公软件例如:OFFICE):专用软件(适用各个工作环境的软件) 计算机发展史计算机发展年代时间表:40-50年代   第

普林斯顿《算法II》第一周学习笔记 Undirected Graph

普林斯顿的算法课是Cousera上评价挺高的一门课,课程的教学语言用的是java,课程中的算法都会被封装成类的形式,对于建立各个算法的知识结构来说还是很有好处的. 第一周的内容是Undirected Graph, 图的存储形式分为adjacency matrix(邻接矩阵)和 adjacency list(邻接表),前者对于可以以O(1)的复杂度查找两个节点是否有边,后的优势在于面对sparse maxtrix(稀疏矩阵)时可以存储很多空间. Depth-first search & Bread

第一周学习笔记

首先这周的课程是一次大纲性的介绍课程,因为是第一周,所以并没有很过于具体地介绍这门课的细节内容重点之类的.在我自己的理解来看,未来的社会追求的是如何用有限的资源做到最大的利用,追求低耗能,高效率,精确化,智能化,以及更好地服务于生活中.现在社会是信息爆炸的时代,因此成为一个合格的工程师并不需要你如何如何地博闻强识,有学习能力.能构建自己的知识体系,做到会查会用会创新,这是对于新时代的工程师的要求.对于我自己来说,很多方面都有许多不做,诸如如何将学到的知识灵活地运用到具体地设计项目中,如何做到有的