因为第一章为基础的C实现了推箱子的简单游戏,后面要使用到许多C++的知识,之前学习过,但是因为用的较少,这里在简单复习一下。加深理解,同时也知道了在学校学的知识点只是停留在基础的语法部分,要真的去理解才能取得进步。

一、命名空间

一、为什么使用命名空间

在C++应用程序中会出现同样的情况。例如,您可能正在编写一些具有名为xyz()函数的代码,并且还有另一个可用的库,它也具有相同的xyz()函数。现在编译器无法知道您在代码中引用的xyz()函数的哪个版本。

名称空间(namespace)被设计来克服这个困难,并被用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的名称。使用名称空间,您可以定义定义名称的上下文。本质上,名称空间定义了一个范围。

C++命名空间的使用:

使用整个命名空间:using namespace name;
使用命名空间中的变量:using name::variable
使用默认命名空间中的变量:  ::variable

例如:using namespace std;  该指令告诉编译器后续代码将使用指定命名空间  std 中的东西。

二、模板

//类模板:
template<typename 类型参数1 , typename 类型参数2 , …>
class 类名{//TODO:
};
//函数模板
template<typename T1,typename T1, ...>
返回值类型 模板名(形参列表){//函数体
}

三、构造函数和析构函数

类的构造函数是一种特殊的函数,在创建一个新的对象时调用。(默认构造函数就是无参构造函数)

类的析构函数也是一种特殊的函数,对象消亡时被调用。

拷贝(复制)构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。只有一个参数,为本类的引用

默认情况下,C++编译器会至少给类加三个函数(默认构造函数,复制构造函数,析构函数)。

①若写了有参构造函数,则不会提供无参构造函数,会有拷贝构造函数。

②若写了拷贝构造函数,则不会提供其它构造函数。

四、const

1、const修饰变量 const修饰变量,可以使变量具有常属性,也就是该变量在以后的使用中其值都不能进行改变

(const修饰的变量要进行初始化。)

2、const和指针

int const* p;//指针p本身可以修改,但是p指向的内容不可以修改
const int*p;//指针p本身可以修改,但是p指向的内容不可以修改// const 和变量类型 int 可以互换位置,二者是等价的
int *const p;//指针p本身不能修改,但是p指向的内容可以被修改
int const *const p;//指针p本身和p指向的内容都不可以修改
​
const int *const p;//指针p本身和p指向的内容都不可以修改
简记:(const放在*左边)左定值,右定向

3、保护函数参数不被改变 用const修饰函数的参数,可以保证该参数的值在函数内部不被改变。

一般情况下,如果参数是按值传递的,那么函数本来就无法改变参数值。但如果按指针传递或按引用传递,则const是有用的。

4、const修饰函数返回值 const修饰函数的返回值,表示函数的返回值是常量,不可更改。该返回值只能被赋给加const修饰的同类型变量。一般在类中使用,不常用。

const int fun(){//...}

5、const修饰类成员函数 const可以修饰类成员函数,防止类成员函数中除了static成员之外的其他成员(变量)被修改。

class T{
public :void fun()const{a = 20;//错误,不可以修改非static的值b = 10;}
private:int a;static int b;
};
//注意:const 关键字不能与 static 关键字同时使用,因为 static 关键字修饰静态成员函数,静态成员函数不含有 this 指针,即不能实例化,const 成员函数必须具体到某一实例。

小例子无法体现const的好处,当程序规模变大时就会体现出这种安全机制的重要性了。在写函数时只要能加const就尽量加上。

五、delete

T *p = new T;
delete p;//释放
T *p =new T[N];//动态分配一个任意大小的数组:
delete[] p;//释放  ,如果采用delete p;会导致动态分配的数组没有被完全释放。

因为编译器无法从指针上判断所指的是否为数组,需要人来告知。

世嘉新人培训教材学习_第一章 _C++知识点复习相关推荐

  1. 世嘉新人培训教材学习_第一章 (推箱子代码)

    第一章 第一个游戏--"推箱子" 自己也把代码实现一遍. 游戏程序,就是获取输入,将输入反映到游戏世界,显示结果这三项 的无限循环.这个过程称为游戏循环或者主循环. while(t ...

  2. 世嘉新人培训教材_游戏开发

    世嘉新人培训教材_游戏开发 第一章 第一个游戏 开发环境搭建 Windows 二级目录 三级目录 第一章 第一个游戏 开发环境搭建 1.在微信公众号下载vs2017 2.快速安装程序包含有Window ...

  3. 世嘉新人培训教材 demo环境配置

    前言 在书的p4页,运行NonFree项目时出现了一系列环境问题的bug.记得第一次在另一台电脑跑的很顺畅,第二次换台电脑戴上痛苦面具.由于网上资料甚少,对于刚学习的萌新来说还是十分有必要讲解一下来避 ...

  4. 《世嘉新人培训教材——游戏开发》踩到的坑2、读取图片文件

    问题定位在62页,开始使用DDS图片转化插件前需要安装DirectX才能成功转化.(有好兄弟推荐个下载链接吗?网上的版本不是太老了就是捆绑安装了不想要的程序.) 但是如果想要显示自己在网上下载的图片却 ...

  5. 《世嘉新人培训教材——游戏开发》踩到的坑1、LNK2019问题的解决

    问题详述:P54页2.3节在设置完Visual Studio2019的项目(包括引用.外部依赖库.附加依赖项.debug)后,录入代码进行调试后报错:      错误    LNK2019    无法 ...

  6. 【邱锡鹏-神经网络与深度学习】第一章绪论 知识点汇总

    深度学习是机器学习的分支,从有限样例中通过算法总结出一般性的规律,应用到未知的数据上. 深度学习:原始数据输入--->多个线性或非线性组件--->每个组件对信息进行加工,影响后续组件--- ...

  7. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  8. c++语言编程,一个电灯两个开关控制,[理学]四川大学计算机学院精品课程_面向对象程序设计C++课件_游洪越_第一章绪论.ppt...

    [理学]四川大学计算机学院精品课程_面向对象程序设计C课件_游洪越_第一章绪论 主讲教师: 游洪跃 个人主页: /~youhongyue 邮件地址: youhongyao@ 教材:<C++面向对 ...

  9. 王道考研计算机网络学习心得——第一章-计算机网络体系结构

    ​ 前言   本文主要是我学习计网的心得,用王道考研的原因主要是因为,又有老师教又有直接的资料书,个人觉得方便一点,不用到处找网课,也不用想到底看哪本书好,等这一轮学完了再看别的书,想必也能得心应手一 ...

最新文章

  1. TortoiseSVN在Windows下的使用
  2. mysql的远程链接工具_Navicat远程链接mysql-8数据库具体操作
  3. hdu 1003 A + B Problem II 使用整型数组轻松实现大数求和
  4. Linux 利用yum源安装subversion(svn)客户端
  5. ExtJs Grid 合计 [Ext | GridPanel | GridSummary]
  6. nodejs环境搭建与express安装配置
  7. Intellij IDEA 导入或运行流式处理框架storm以及java.lang.NoClassDefFoundError报错的解决方案
  8. 数模更新篇-3-因子分析模型
  9. adb 连接某个wifi_adb通过wifi连接android设备的方法(根据网络中大神的提示加上自我摸索得到):...
  10. 批量创建钱包地址并保存私钥
  11. VTN系列多通道振弦模拟信号采集仪常规操作
  12. 布谷鸟过滤器java使用_一种基于布谷鸟过滤器的云平台隐私保护方法与流程
  13. 为什么每天那么累?如何让自己精力充沛?
  14. 一个人越想挣钱,越挣不到钱!背后的原因是什么?
  15. 学习zencart模板制作
  16. 假期如何学java_假期学习javaWeb每日笔记
  17. 【网络安全】如何限制内网网速
  18. 我为什么特别看好浦发
  19. java-php-python-ssmNBA论坛系统计算机毕业设计
  20. Java学习(58)Java单例模式——单例模式的特点及适用场景

热门文章

  1. linux停止network服务命令是,Linux启动关闭重启网络服务的两种方式
  2. 供水泵站远程监控系统功能
  3. Java如何实现文档在线预览+下载
  4. Labview兼职(部分)
  5. html标签主体分为三个部分,HTML的基本结构与标签的初步了解
  6. Python dataframe绘制饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...
  7. 【CVPR 2020】化繁为简,弱监督目标定位领域的新SOTA - 伪监督目标定位方法(PSOL)...
  8. JavaScript之入门学习风云(4)
  9. SSM+基于SSM的养老管理系统 毕业设计-附源码221609
  10. 计算机毕业设计java的大学生租赁网