您的位置:首页 > 其它

第2章 对象的创建与使用

2009-10-12 17:21 260 查看
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

说明依预定义不同,包含的内容是不一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: