C++是什么鬼?!

哈哈!你对C++了解很多,所以不用担心。这是一件好事,无论是软件设计、硬件设计还是系统设计(系统,包括软件和硬件的整体,具体来说软硬件之间的接口应该放在哪里),都有一个折中,复杂度和成本的折中,成本和性能的折中。

1).当动态分配内存且数组越界时,建议不要使用防御性编程。有一种情况必须使用,就是当用动态创建的成员变量初始化对象失败时,动态内存被释放,因为在这种情况下,你找不到其他方法。而且,这种方法可以用来调试程序。

2)泛型编程在编译器实现上确实有异同,不能要求所有编译器都一致。等你积累了足够的经验之后,自然就能游刃有余了。

3).指针,也不想在某些书上宣扬,危险,系统级编程,怎么能离开指针。Auto_ptr主要是用类封装指针,用运算符重载指针,像普通指针一样使用。关键是它有一个析构函数,可以释放动态创建的内存。你可以选择用或者不用。

4).名称空间std是一个标准的名称空间,所以编写它是为了防止变量和函数与std中的内容冲突。你这里的CreateFile是win32API,你还会发现MFC有CFile,C语言的de struct FILE,类unix的create等等。

我觉得你现在的问题是急于求成。你要循序渐进,很多东西,你懂,但是你不懂,不懂它的原理。