C++学习总结1

总结很重要啊。
看了几天C++了,总结下基础的东西。
先说说预编译(写个hello world给我整崩溃了):
C++在编译的时候会读#define和#include,然后做相应的替换。
如果头文件太大,被太多文件include的话,编译就很慢了,也没必要include一次就编译一次。
所以就整了个预编译技术:在我们创建工程的时候自动会生成stdafx.h,这个文件一般包含一些头文件,这些被包含的文件基本上不会怎么修改,所以我们只需要把stdafx.h文件编译一下,生成一个预编译头文件.pch;编译器会在编译.cpp文件时,将这个预编译头文件加入其中;所以如果我们自己写的.cpp文件没有#include "stdafx.h" 第一行就会出现编译出错。
.h文件是不能编译的,所以会生成一个stdafx.cpp的空文件,这个文件只有一句#include "stdafx.h",这个文件的目的就是为了编译stdafx.h文件。
同样,如果我们没有先编译stdafx.h,而是先编译我们自己写的.cpp文件就会出现找不到.pch文件。

再说说命名空间:
  这命名空间也没撒特别,想成一个作用域就ok了。
  这个命名空间给我整得也郁闷,最开始写
#include <iostream>
想使用cout,但是就是不能用,一查资料才发现这是标准化后需要命名空间的支持。
我就纳闷了标准库中的东西,既然是标准,为什么就不整个全局命名空间嘛。还要显示的使用std空间名称。


  宏,我个人理解就是把复杂的或者不容易理解的东西重新定义一个名称吧了,当然也有其他功能;如#pragma.
  宏的替换和inline区别是:inline替换否由编译器决定。
  替换就是空间换时间。

sizeof
  这个就是看一个类型分配的空间大小。如 sizeof(int) //4
  有几个特殊情况sizeof(1==1) //1 或者 4(VC6) 这个有点蛋疼,我想了大半天(还是不懂)。
  struct s{
    char c;
    int i;
  };
   sizeof(s) //8 (本来是5,但是结果应该是i(4)的倍数)
  struct s1{
    char c;
    s ss;
    char c1;
  };
   sizeof(s1) //16 (1+3 + 4 + 1+3,位界是按s中最大的来算)
如果struct中有double,float就又不一样。一般放在开头或者结尾,占得空间最小。

//第一课结束。路过的朋友指正哈

你可能感兴趣的:(C++,基础)