第2章 对象的创建与使用

来源:互联网 发布:淘宝网潮流女装 编辑:程序博客网 时间:2024/05/23 00:04

1. 在定义函数或者变量时,会为名字分配存储空间。在C和C++中,可以在不同的地方声明相同的函数或者变量,但是只能有一个定义。有时称为ODR(one-definition rule, 单一定义原则);

2. C与C++在函数声明上的不同:

    在C语言中,声明

       int func();

    表示“一个可以带任意参数(任意数目,任意类型)的函数”。这就妨碍了类型检查。而在C++中他就意味着“不带参数的函数”。

3.extern关键字

  3.1 在变量声明前面加extern,表示声明了一个变量但是不定义它,这个变量可以放在文件的后面或者其他文件中定义。

  3.2 extern关键字对函数来说就是多余的、可选的。

4.头文件<cstdio>和<stdio.h>

<cstdio>与<stdio.h>这两种包含方式是不同的:使用.h的文件时老的、非模板化的版本,而没有.h的文件是新的模板化版本。如果再同一程序中混用这两种形式,会遇到某些问题。

网上的解释:

cstdio是c++从C的stdio.h继承来的,两者内容都一样,只不过cstdio头文件中定义的名字被定义在命名空间std中。在C++中要尽量避免C风格的出现, 因此需要使用 #include <cstdio>.

在C语言中,stdio.h 头文件是主要的。
而在后来的C++语言中,C只是C++的一个子集,且C++中,已不推荐再用C的类库,但为了对已有代码的保护,还是对原来的头文件支持。
cstdio文件的内容是这样的:
#if <TRADITIONAL C HEADERS>
#include <stdio.h>
namespace std {
using ::fclose;
using ::feof;
using ::ferror;
using ::fflush;
using ::fgetc;
using ::fgetpos;
using ::fgets;
using ::FILE;
using ::clearerr;
using ::fopen;
using ::fprintf;
using ::fpos_t;
using ::fputc;
using ::fputs;
using ::fread;
using ::freopen;
using ::fscanf;
using ::fseek;
using ::fsetpos;
using ::ftell;
using ::fwrite;
using ::getc;
using ::getchar;
using ::gets;
using ::perror;
using ::putc;
using ::putchar;
using ::printf;
using ::puts;
using ::remove;
using ::rename;
using ::rewind;
using ::scanf;
using ::setbuf;
using ::setvbuf;
using ::size_t;
using ::sprintf;
using ::sscanf;
using ::tmpfile;
using ::tmpnam;
using ::ungetc;
using ::vfprintf;
using ::vprintf;
using ::vsprintf;
}
#endif

说明依预定义不同,包含的内容是不一样的。