Lesson 2
一、结构体与类型的区别:
与C语言不同的是,在C++中的结构体允许拥有函数成员,这和类有很大的相似性,二者的主要差别在于成员的访问权限上:
*缺省状态下,结构体的成员一律默认为是Public的,可以在外部访问,当然也可以将这些成员声明成Private的。
*缺省状态下,类的成员一律默认为是Private的。

二、父类与子类的成员访问规则:

三、虚函数的概念
声明方式:在函数头前面加上关键字virtual : virtual void FunName(int ,int);
虚函数的引入是为了C++多态 的特性,一般的使用场景为:如果你声明了一个父类的指针指向一个子类的对象,利用该指针进行函数调用,那么,当你调用的函数在父类中声明是虚函数时,C++会采用迟绑定策略(late binding),根据指针指向的具体对象类型判断需要调用那个函数,如果子类中有这个函数,则执行子类的函数定义,如果没有,则执行这个父类的虚函数调用。
虚函数的实现实际上使用了一个虚函数表的概念,这个虚函数表解决了继承和覆盖的问题,一个类如果有虚函数的的时候,在创建一个这个类的对象时,该对象最前面的存储空间位置会维护一个虚函数表,里面存放的是这个类所有的虚函数,存放顺序按照函数声明的先后顺序,而且首先存放父类的虚函数,其次是子类的,除非有覆盖的情况发生。

纯虚函数指的是没有函数实现,只有函数声明的虚函数,声明方式为:
virtual void FunName()=0;
纯虚函数是不能调用的,除非给了他的实现。例如,在父类定义了一个纯虚函数,继承的子类给出了这个函数的实现,那么这个子类的对象就可以调用它,纯虚函数往往用在设计父类时,不确定会不会在以后建立的派生类中用得到某些函数,可以先在父类中给出这个纯虚函数的声明。
另外,当子类去继承父类的虚函数的时候,子类的这个函数同样是一个虚函数,
不管有没有在其前加上virtual关键字。在这种情况下,子类函数会覆盖父类的函数,在虚函数表上的表现就是:在这个子类的对象最开始的存储空间上,子类的虚函数代替了父类的虚函数的位置,这样如果你调用一个子类对象的虚函数,父类的这个函数就不会产生影响。

四,引用
定义一个变量的引用,实际上是给这个变量一个别名定义方式为:
int a=0;
int &b=a;
上面就定义了一个变量a的别名,a和b指向同一个内存空间,改变a的同时也会改变a;引用变量必须在定义时初始化。引用和指针在内存空间上的区别:

引用与指针在使用上的区别在于,是代码更具有逻辑性,例如,我们分别用引用和指针作为参数实现一个操作符“=”的重载函数:
指针版本:ClassName operator =(ClassName * another);
引用版本:ClassName operator =(ClassName & another);
那么在调用的时候,二者的形式分别为:
指针版本: ClassName a;
ClassName b;
a=&b
引用版本: ClassName a;
ClassName b;
a=b;
显然,传递引用更具有逻辑性;二者还具有其他形式的区别,简单表示为:
指针:变量,独立,可变,可空,替身,无类型检查;
引用:别名,依赖,不变,非空,本体,有类型检查;

五,为什么包含自定义的头文件用双引号,包含系统头文件要用尖括号?
二者的主要区别在于搜寻文件路径的起点上面;如果头文件使用双引号包含的,则从该项目(工程)的当前目录下开始查找,如果使用的是尖括号,则从系统目录下开始查找。其实可以统一用双引号,这样的话,会先从当前目录下查找,如果没有找到,则去系统目录下查找。

六、使用命令代码块:

ifndefine abcdefg; //这只是随便定义一个宏,不代表要使用它,与# define

define abcdefg 1; // # define abcdefg;等效

endif

在头文件中,来防止头文件被重复包含。

七、VC++程序编译链接原理与过程

孙鑫C++课程笔记2——创建类相关推荐

  1. 孙鑫老师VC笔记(转)

    第一课 1.MFC生成的C++源文件中都有StdAfx.h,此文件包含了常用的AFX函数的声明,其中有afxwin.h,此文件包含了CRECT,CPoint,CWnd等许多类及其方法的声明. 2.Pr ...

  2. 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15] .

    第11课 1.创建4个菜单,为其添加消息响应,用成员变量保存绘画类型.添加LButtonDown和Up消息. 2.当窗口重绘时,如果想再显示原先画的数据,则需要保存数据.为此创建一个新类来记录绘画类型 ...

  3. 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15]

    第11课 1.创建4个菜单,为其添加消息响应,用成员变量保存绘画类型.添加LButtonDown和Up消息. 2.当窗口重绘时,如果想再显示原先画的数据,则需要保存数据.为此创建一个新类来记录绘画类型 ...

  4. 孙鑫VC学习笔记:第七讲

    七.对话框 2006年8月5日 14:25 因为笔记是用OneNote做的,上传以后为看不到图片,于是我截图放到相册上面, 相册地址为:http://photo.163.com/photos/good ...

  5. 孙鑫VC++课程中用到的函数一览

    在许多VC教科书中这些函数/方法.结构.宏等比较常见,觉得比较重要,虽然不用记住,但应该知道,所以列举出来,没写出参数和返回值情况,编写程序时还需仔细查看MSDN文档.本人英语水平较差再加上自己的一些 ...

  6. 孙鑫MFC学习笔记1.Windows应用程序运行机理

    1.MSG结构 hwnd:窗口句柄 message:消息类型 wParam & lParam:消息的附加信息(比如键值) time:消息被投递的时间 tip:typedef的作用是从变量类型区 ...

  7. mfc编程 孙鑫_孙鑫VC++视频教程笔记-(3)MFC程序框架的剖析 附1-SDI程序流程图

    1,寻找WinMain人口: 在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码. 路径:MFC|SRC|APPMODUL.CPP: _tWinMain(HINSTANCE hIns ...

  8. mfc编程 孙鑫_孙鑫MFC学习笔记7:对话框编程(上)

    1.DoModal创建模态对话框 2.Create创建非模态对话框(需要用ShowWindow显示出来) 模态:对话框显示,程序会暂停,直到对话框关闭 非模态:对话框显示,程序继续执行 3.对于模态对 ...

  9. 孙鑫VC++讲座笔记-(6)菜单编程

    1,弹出菜单(Pop-up)是不能用来作命令响应的. 2,MFC中菜单项消息如果利用ClassWizard来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序:View类--Doc类--CMa ...

最新文章

  1. NVL 和NVL2函数
  2. 磁盘位置_CPT201-磁盘
  3. 0 有符号和无符号整型数字
  4. |NOIOJ|动态规划|3532:最大上升子序列和
  5. 看着女朋友的肚子,以肉眼可见的速度大起来......
  6. Vim移动光标快捷键汇总
  7. 81-spark异常总结1
  8. 【转】斐讯K2刷华硕固件教程
  9. 2010年通信工程概预算培训讲义
  10. 分割线怎么搭建css,css怎么设置分割线
  11. 一句话理解到底什么是电平触发器,脉冲触发器,同步触发器,边沿触发器
  12. Java setlocale方法_Java Configuration.setLocale方法代碼示例
  13. 桌面计算机未响应,电脑软件总是未响应 电脑应用程序经常无响应,
  14. Python 调用高德 API 实现地址转为经纬度
  15. python中sub的用法_python 正则表达式篇 - sub 用法
  16. MySQL究竟是如何做到持久性的?
  17. linux给变量加单引号,grep中加单引号与不加引号的区别
  18. 非正式第十三届蓝桥杯大赛
  19. MacOS 打开软件出现 ‘xxx‘ “将对您的电脑造成伤害。 您应该将它移到废纸篓。“的解决方式
  20. h3c无线管理 dns服务器,H3C FIT AP与AC连接时三种的注册流程

热门文章

  1. UI设计中的交互设计原则有哪些?
  2. 启智收获优秀合作伙伴奖,再次协办千万奖金的昇腾AI创新大赛2023
  3. ChemDraw Pro绘制无环链结构的两种方法
  4. PQA2000 地震应急救生器
  5. 个人看法在SEO的角度下谈谈MSO:媒体搜索优化
  6. CSS轮播图中小圆点的定位问题
  7. EXCEL判断第一列如果相同,则合并第二列中的值到一个单元格,中间用逗号隔开
  8. 数字化品牌营销实训专家 李玮东老师
  9. 想入坑自动化测试?先了解下必备工具---Selenium
  10. 基于opencv的巡线方案