C++中class和include的区别
来源:互联网 发布:steam无法连接到网络 编辑:程序博客网 时间:2024/05/19 12:41
前向声明的定义:有些时候我们可以声明一些类但是并不去定义它,当然这个类的作用也很有限了。
比如class foo;
声明一个foo类,这个声明,有时候也叫做前向声明(forward declaration),在声明完这个foo类之后,定义完这个foo类之前的时期,foo类是一个不完全的类型(incomplete type),也就是说foo类是一个类型,但是这个类型的一些性质(比如包含哪些成员,具有哪些操作)都不知道。
因此这个类的作用也很有限.
(1)不能定义foo类的对象。
(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西)
(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。
正因为有前向声明的存在,我们在很多时候可以简便的做一些事情。
在c++中,如果要为类编写头文件的话,一般是要#include一堆头文件的,但利用前向声明和c++编译器的特性,其中大部分是不需要的。
c++编译器做的事情主要是:1.扫描符号;2.确定对象大小。
所以很多时候并不需要将类都include进来。
比如:
(1)由于所有对象类型的应用所占用的空间都是相同大的,所以c++编译器很好确认对象大小。
class string;class Sample{private:string &s;};
这里只需要做一个string的前向声明就可以了,不需要#include <string>
(2)由于所有类型的指针也是相同大小的。所以与(1)类似,也可以只做前向声明就好。
(3)声明成员函数的形参或者是返回类型,也可以利用前向声明的性质。
class string;class foo;class Sample{public:foo foo_test(foo &);private:string &s;foo *f;};
这里,我根本没有定义一个foo类,但是还是可以这样用,因为成员函数不占类对象的大小,所以c++编译器还是可以确定对象的大小。
前向声明的作用在于告诉编译器这个一个在别的地方定义的类型。这样C++编译器就能生成正确的符号表了。
- C++中class和include的区别
- C语言中,#include的用法:#include "" 和 #include<>区别
- class和#include 的区别
- object-c中#import #include @class的区别
- C/C++语言中,#include <>和#include ""的区别
- C语言中,#include<>和#include" "的区别
- C++中直接class 类名和#include的区别
- include h 和include 。c的区别
- C 【#include <> 和 #include "" 的区别】
- C/C++ #include<> 和 #include""的区别
- include "*.h" 和 declare class *; 的区别?
- include 和 class类声明的区别
- #import、#include和@class的区别
- #import、#include和@class的区别
- #import、#include和@class的区别
- #import、#include和@class的区别
- include和class+类名的区别
- C语言include中双引号和尖括号的区别
- 常见android手机分辨率(xxhdpi,xhdpi)
- poj 3320 Jessica's Reading Problem 简单题还是尺取
- 初学schema---schema命名空间理解
- iOS6定位服务编程详解
- hibernate+struts2登录 用户名 密码 判断问题
- C++中class和include的区别
- uva10308 - Roads in the North 树形DP
- Developing Excel Utilities with VBA
- 回溯法 01背包
- 第14周项目2-改变数组元素值
- C语言用结构体指针作函数参数
- 嘻嘻嘻
- iOS开发那些事-iOS6苹果地图实用开发
- Mysql启动失败报错1067