美文网首页
c++中的前置引用声明

c++中的前置引用声明

作者: zhjwang | 来源:发表于2018-11-25 15:33 被阅读7次

c++编程经验

1.关于前置引用声明

最近用到一些前置声明,所以做了一些研究。
前置声明的原理:只能定义指针或者引用,因为编译器已经知道分配多大的内存了。
有人说不必要的include,会减少编译时间。(不在.h中include,难道就不用在.cpp中包含了吗?),所以减少头文件之间的循环include,是前置声明的一大作用。

2.定义

类的向前引用声明只适用于指针和引用。

class A;
class B
{
public:
  A* m_a; //(不能A m_a)
}

3.向前声明的限制

(1)不能定义foo类的对象;

(2)可以用于定义指向这个类型的指针或引用。(很有价值的东西);

(3)用于声明(不是定义)使用该类型作为形参或者返回类型的函数。

4.实例

c++编译器做的事情主要是:1.扫描符号;2.确定对象大小。
所以很多时候并不需要将类都include进来。
比如:

  • 1.由于所有对象类型的引用所占用的空间都是相同大的,所以c++编译器很好确认对象大小。
class string;
class Sample
{
private:
  string &s;
}

这里只需要做一个string的前向声明就可以了,不需要#include <string>,因为引用和指针都是固定大小的。

  • 2.声明成员函数的形参或者是返回类型,也可以利用前向声明的性质
class string;
class foo;
class Sample
{
public:
    foo foo_test(foo &);
private:
    string &s;
    foo *f;
};

这里,我根本没有定义一个foo类,但是还是可以这样用,因为成员函数不占类对象的大小,所以c++编译器还是可以确定对象的大小。

前向声明的作用在于告诉编译器这是一个在别的地方定义的类型。这样C++编译器就能生成正确的符号表了。

相关文章

  • c++中的前置引用声明

    c++编程经验 1.关于前置引用声明 最近用到一些前置声明,所以做了一些研究。前置声明的原理:只能定义指针或者引用...

  • C++ — 前置声明

    类的前置声明

  • C++引用C接口

    C++引用C接口 声明的意义

  • 总结篇(四) -- 进阶

    概述 本篇主要讲述声明前置、引用类型、函数作用域链、闭包、HTTP、Web安全和性能优化 声明前置 在进入一个执行...

  • js 中的声明前置

    先看代码 解析以上代码等同于 在进入一个执行环境后,先把 var 和 function 声明的变量前置, 再去顺序...

  • C++中引用的用法(一)

    原文链接:C++中引用的基本用法 一、基本用法 创建一个对象的引用只需把声明符写成&val的形式即可: 创建引用时...

  • C++ supplement--引用及指针

    在c++的编程实现过程中,用到的引用主要是在函数的形参中,声明引用型的变量使得形参的地址指向实参。 其实引用相当于...

  • 声明前置

    变量的声明前置 用var创建变量,声明会前置 如果上面没用 var 声明变量,直接使用就是会报错 函数的声明前置 ...

  • 【C++前置声明和头文件】

    http://blog.csdn.net/fallStones/article/details/6266632 h...

  • C++中的类型别名

    本文写作时长1小时 以前我们学习过C++中的引用,引用就是变量的别名。不光变量可以定义别名,类型也可以声明别名。 ...

网友评论

      本文标题:c++中的前置引用声明

      本文链接:https://www.haomeiwen.com/subject/ofvpqqtx.html