首先来看一下今天的成绩:

虽然没到三百,但是还是有进步。

今天的目标是350。

继续记录一下C++里遇到的盲点。

静态成员

分为静态数据成员和静态函数成员。

静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。

静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。

静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以。

静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。

.静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。

静态成员函数不可以同时声明为 virtual、const、volatile函数。

最后要说的一点是,静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问。在存储空间中都只存在一个副本。可以通过类和对象去调用。

用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。

静态成员的初始化在全局区。

友元

类的外部,也就是通过实例来访问私有(private)或保护(protected)成员,这是被禁止的。但从实用性来说,的确有时很需要在外部访问,C++增加了一种称之为“友元(friend)”函数的申明,将“特权”赋给一些函数(可以是全局函数,也可以是其它类的成员函数),使之能够访问该类的私有和保护成员。
友元函数必须在类里面申明,而且友元函数一定不是该类的成员函数。因此,这样的“特权”实际上已经不是完全的面向对象设计了,当然,我们也可以不用它。另外,友元函数的申明在派生类无效,除非派生类中再申明一次,当然类型转换为基类时,使用没有任何问题。

友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。

使用友元类时注意:
(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的声明。

宏定义

不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏”。格式:#define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”。  
在讲解带参数的宏的使用之前,同样先来看看使用带参数的宏时需要注意的几点。

宏名和参数表的括号间不能有空格。

宏替换只做替换,不做计算和表达式求解,这一点要格外注意。

函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。

extern的用法

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

其实要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可,为啥要用extern?因为用extern会加速程序的编译过程,这样能节省时间。

在C++中extern还有另外一种作用,用于指示C或者C++函数的调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题。

内部函数和外部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数

转载于:https://blog.51cto.com/8672742/1368298

C++ 从零单排(2)-基础知识二相关推荐

  1. CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释

    CV:计算机视觉技术之图像基础知识(二)-图像内核的可视化解释 目录 图像内核的可视化解释 测试九种卷积核 官方Demo DIY图片测试 DIY实时视频测试 相关文章 CV:计算机视觉技术之图像基础知 ...

  2. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  3. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  4. oracle:oracle基础知识(二)

    oracle基础知识(二)笔记:高级查询 文章目录 分组查询 多属性分组语法: 过滤查询 group by 语句增强 sqlplus报表功能 多表查询 等值连接 外连接 自连接 子查询 子查询中的空值 ...

  5. 网络基础知识(二) HTTP

    网络基础知识(二) HTTP 黑发不知勤学早,白首方悔读书迟. 内容参考:https://www.runoob.com/http/http-content-type.html HTTP协议是Hyper ...

  6. CV:计算机视觉技术之图像基础知识(二)—图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /sobel /outline/sharpen)

    CV:计算机视觉技术之图像基础知识(二)-图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /left sobel /outline/right s ...

  7. scikit-learn学习基础知识二

    scikit-learn学习基础知识二 文章目录 scikit-learn学习基础知识二 一.介绍 二.代码实现 三.运行结果 四.总结 一.介绍 本文我们学习scikit-learn中的KNeigh ...

  8. kettle对字符串去除空格_整理|ABAP基础知识二:常用字符串处理

    常用字符串处理 上一期整理了ABAP的数据类型和定义,今天我们整理一下开发过程中常见的字符串处理命令.虽然说这些基础知识对于已经熟练使用Ctrl c + Ctrl v的资深码农来说过于简单.但是对于一 ...

  9. [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

    通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Pytho ...

  10. Java基础知识(二) 面向对象的技术

    Java基础知识 面向对象的技术 1. 面向对象与面向过程有什么区别 2. 面向对象有哪些特征 3. 什么是继承 4. 组合和继承的区别 5. 多态的实现机制 6. 重载和覆盖有什么区别 7. 抽象类 ...

最新文章

  1. C语言:在屏幕上输出信息
  2. R语言pmax函数和pmin函数按位计算向量最大值、最小值实战
  3. python编程基础与应用-有哪些适合零编程基础的人学习Python的书?
  4. C#序列化反序列化对象为base64字符串
  5. spring security源码分析之一springSecurityFilterChain
  6. input的属性AutoComplete——关闭浏览器文本框自动提示
  7. SpringBoot的编码问题
  8. Eclipse调试提示:Breakpoint attribute problem: installation failed
  9. python导入模块的常用方法_(9)python模块的定义、导入、优化,常用模块
  10. android 设置EditText光标位置
  11. Java EE7和Maven工程入门(1)
  12. 单片机支持EM4100和T5577两种ID门禁卡
  13. 40余个超好用的在线影视站点
  14. linux复制文件到另一台服务器
  15. python中怎么定义二维数组_如何在Python中定义二维数组
  16. WEB测试工具---死链接检测工具xenu
  17. 进入故障恢复控制台从此不需要密码
  18. c++直角空心三角形_压轴题中对三角形中位线的另类诠释
  19. 计算机二级ms高级应用选择题,2016计算机二级考试MsOffice高级应用练习题
  20. 罐装红酒的开拓者——智利菲尔帝进军中国市场

热门文章

  1. CentOS6.x定制~修改CentOS字样
  2. 演练:在 ASP.NET 中缓存应用程序数据
  3. win2003服务器安全设置
  4. java异常的嵌套和级联
  5. java反射 反射构造函数 报 wrong number of arguments 错误
  6. 关于http-server的备选方案-- browser-sync
  7. python pip安装
  8. 美国人竟然是这样教育小学
  9. .NET配置文件的10大安全漏洞
  10. java file.listFiles()按文件名称、日期、大小排序