C++面向对象高级开发


**程序设计语言,通常简称为编程语言,是一组用来定义计算机程序的语法规则,是一套包含语法、词汇和含义的正式规范。这些规范通常分成4个部分。

  • 数据成分:用以描述程序中所涉及的数据。
  • 运算成分:用以描述程序中所包含的运算。
  • 控制成分:用以表达程序中对运算流程的控制。
  • 传输成分:用以表达程序中数据的传输。**

C++程序设计(I)- 面向对象程序设计

1. C++编程简介

1.1 基础

  • 变量(variable)
  • 类型(types):char,short,int,long,float,double,struct
  • 作用于(scope)
  • 循环(loops):while,for
  • 流程控制:if-else,switch-case
  • 编译
  • 连接
  • 可执行程序

1.2 目标

  • 培养正规、大气的编程习惯
  • 以良好的方式编写C++ class,基于对象(Object Based)
    • class without pointer members
    • class with pointer members
  • 学习Classes直接的关系,面向对象(Object Oriented)
    • 继承(inheritance)
    • 复合(composition):聚合
    • 委托(delegation,composition by reference):组合

1.3 C++历史

  • B语言(1969)
  • C语言(1972)
  • C++语言(1983)
    new C --> C with Class --> C++

1.4 C++演化

  • C++ 98(1.0)
  • C++ 03(TR1,Technical Report 1)
  • C++ 11(2.0)
  • C++ 14
  • C++语言和C++标准库

1.5 参考书

  • C++ Primer
  • The C++ Programming Language
  • Effective C++
  • The C++ Standard Library
  • STL源码剖析

1.6 C&C++关于数据和函数

  • C(Data + Functions),variables
  • C++(Data Members + Member Functions),objects

2.头文件与类的声明

2.1 C++代码基本形式

  • .h
    头文件(header files):自定义头文件,标准库头文件
#ifndef __XXX_H__
#define __XXX_H__  // 防卫式声明(guard)
// 前置声明(forward declarations)
...
// 类声明(class declarations)
    // 模板(template)
    template<typename T...>
	// class head
	class XXX
	// class body
	{
	    ...
	}
// 类定义(class definition)
...
#endif

  • .cpp
    • 内联函数(inline)
      只是建议编译器内联,但是否能够内联取决于编译器实现。
    • 访问级别
      private,public,protected

3. 构造函数

  • 带默认参数的构造函数
  • 构造函数初始化列表,用 “:”
  • 构造函数可以重载(overloading),编译器会给重载函数重新命名,保证函数名不重复。注意空参数构造函数和带所有默认值构造函数的冲突。
  • 私有构造函数

4. 参数传递与返回值

  • 常量成员函数(const member functions)
  • 参数传递:
    • 传值(pass by value)
    • 传引用(pass by reference)(to const)
  • 友元(friend)
    相同class的各个objects互为友元(friends)
  • 返回值
    • 返回值
    • 返回引用
      在这里插入图片描述

5. 操作符重载与临时对象

  • 操作符重载
    operator xxx,是写成成员函数,还是非成员函数
  • 临时对象
    typename()

6. 复习Complex类的实现过程

7. 三大函数:拷贝构造,拷贝赋值,析构

  • 深拷贝与浅拷贝
  • 拷贝构造
    1)分配新空间,2)拷贝
  • 拷贝赋值
    1)检测自我赋值(保证效率和正确性),2)释放自己,3)分配新空间,4)拷贝

8. 堆,栈与内存管理

  • 变量范围(scope)
    auto(stack中分配),static,global
  • stack对象生命周期
  • heap对象生命周期
    delete
  • new
    1)分配内存,2)类型转换(void–>class),3)调用构造函数
    在这里插入图片描述
    在这里插入图片描述
  • delete
    1)调用析构函数,2)释放内存
    在这里插入图片描述

9. 复习String类的实现过程

10. 扩展补充:static,类模板,函数模板,及其他

  • static
    1)静态数据成员,类中只是声明,需要在函数外定义;2)静态函数成员(操作静态数据成员),可以通过对象调用,也可以通过函数名调用
  • 类模板
    template

11. 组合与继承

12. 虚函数与多态

函数

  • 非虚函数(non-virtual):不能覆写(overwrite)
  • 非纯虚函数(impure virtual):提供了默认实现,可以赋写,也可以不赋写
  • 纯虚函数(pure virtual):未提供默认实现,必须赋写

13. 委托相关设计

  • Composite
  • Prototype

C++程序设计(II)- 对象模型

1. 导读

  • 面向对象编程(Object-Oriented Programming)
  • 泛型编程(Generic Programming)
  • 对象模型(Object Model)
    • 虚指针(vptr)
    • 虚表(vtbl)
    • 虚机制(virtual mechanism)

2. conversion function

operator double() const {...}

3. non-explicit one argument constructor

  • explicit:用于构造函数,明确只能显示的调用构造函数
    在这里插入图片描述

4. pointer-like classes

在这里插入图片描述
在这里插入图片描述

5. function-like classes

在这里插入图片描述

6. namespace经验谈

7. class template

在这里插入图片描述

8. Funtion Template

在这里插入图片描述

9. Member Template

在这里插入图片描述
在这里插入图片描述

10. specialization

在这里插入图片描述

11. 模板偏特化

在这里插入图片描述
在这里插入图片描述

12. 模板模板参数

在这里插入图片描述
在这里插入图片描述
这不是模板模板参数
在这里插入图片描述

13. 关于C++标准库

在这里插入图片描述

  • 确认C++支持版本
    cout << __cplusplus << endl ;

14. 三个主题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15. Reference

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

16. 复合&继承关系下的构造和析构

17. 关于vptr和vtbl

18. 关于this

19. 关于Dynamic Binding 19(1)

19. 关于Dynamic Binding 19(2)

20. 关于New,Delete

21. Operator new,operator delete

22. 示例

23. 重载new(),delete()$示例

24. Basic_String使用new(extra)扩充申请量

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值