第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>.
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 说明依预定义不同,包含的内容是不一样的。
相关文章推荐
- c++编程思想-第2章 对象的创建与使用-2
- 第2章 对象的创建与使用
- 第2章 对象的创建与使用(二)
- 第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
- 《C++编程思想》(第二版)第2章 对象的创建和使用(习题及答案)
- Spring.NET依赖注入框架学习-- 泛型对象的创建和使用
- Spring-------使用Spring创建对象
- js使用函数创建对象的方式
- android 使用UDP发送数据 DatagramSocket 创建对象为null
- 使用 JDBC 创建数据库对象
- J2SE基础:2.对象的创建与使用
- 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。
- 第2章.创建和销毁对象[Effective Java 第2版]
- C++中,使用new与不使用new创建对象的区别
- 如何使用线程池创建执行器对象(有3中常用方式)
- 使用Executors创建ExecutorService对象原理简析
- js中使用new Date(str)创建时间对象不兼容firefox和ie的解决方式
- Effective Java读书笔记(第2章-创建和销毁对象续)
- 关于asp使用CreateObject("Excel.Application")出现无法创建ActiveX对象的错误
- 使用 Object.create 创建对象,super 关键字,class 关键字