1.#是预处理的意思哈 就是在程序运行前预先处理
#define XXXXXXXX
有时候可以起到包含.cpp文件的作用哈
比如#program(“”,lib)就是包含一个library
2.组件对象就像一个路由器 或者一个集线器 可以有别的程序四面八方的程序 通过接口连到这个对其他程序来说是黑盒子的东西
而且一个组件对象可以支持不同的接口版本 一个接口版本也可以有很多接口,就是接口版本就是提供不同功能呗。当然也会有统计计数的方法 看当前有几个接口在用“自己“为0时就”关机“(释放组件对象自己的内存)。
接口在C++里就是抽象类(函数指针和数据结构的集合,真正的函数实现在组件对象里),在C语言里就是一个一个的结构体
然后结构体里有一些函数指针,在C#里有专门的接口数据类型 然后一个类继承接口也要实现他的,其实说白了接口就是
不同功能函数指针的集合
3.接口与接口之间当然可以互相切换
4.有.h的头文件里的元素都是暴露在全局中的,没有.h的头文件中的元素都是被封装在namespace中的,所以依楼上说的,没有用.h要比有.h的要多写一行代码:using namespace std,没有.h的头文件不是在全局中的。
<iostream>是标准库的头文件,使用里面的成员,如cout,需要添加对命名空间std的引用,比如:
要在声明#include<iostream>后加上
using namespace std;
如果不用的话需要加上类似std::cout的std域中成员调用。如果不这样的话直接使用cout编译器就就会说它未声明
#include <iostream.h> 是旧式的标准库头文件
我们主张使用<iostream>,而不是<iostream.h>,为什么呢?这里我大致的说一下:
首先,.h格式的头文件早在98年9月份就被标准委员会抛弃了,我们应该紧跟标准,以适合时代的发展。
其次,iostream.h只支持窄字符集,iostream则支持窄/宽字符集。
还有,标准对iostream作了很多的改动,接口和实现都有了变化。
最后,iostream组件全部放入namespace std中,防止了名字污染。
5.(LPWSTR)filename
7.
可以看到一个源文件一个 目标文件 所以C++中文件与文件之间是独立的 用什么必须要有相应头文件
8.#pragma comment(lib,"winmm.lib")包含了 一些与声音相关的系统函数
9.咳咳 是可以运行了 但是乱码了 加载进来的。
10主体没问题
不过一些字体显示有问题
11他自动生成一个运行时的日志文件 是个好想法
12 它这里是就即便是线框模型 他也做背面剔除运算了
所以如果我们看一个面是正面 它的三个顶点必须是顺时针的(因为要左手坐标系叉乘得出外法线方向)
0 40 -90
30 0 -90
-30 0 -90
除非该面是双面可见的
0 40 -90
-30 0 -90
30 0 -90
0xbf00 3 0 1 2
那个b就代表是双面可见的 对该面就不做背面剔除仍然渲染