| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> c++ 前置声明 -> 正文阅读 |
|
[游戏开发]c++ 前置声明 |
#pragma once 即:在.h文件中用class 声明代替include头文件 前置声明只能作为指针或引用,不能定义类的对象,自然也就不能调用对象中的方法了。 前置声明要求: 1.其声明的类是文件所声明的类的数据成员时,是指针成员或引用成员(而不是对象成员); 2.其声明的类是文件所声明的类的成员函数的参数或返回值时,该函数在文件中不存在定义。 ?? ?原因:其声明的类是文件所声明的类的数据成员时,因为编译器申请空间时需要其定义,而指针需要的空间固定(引用的实现也基于指针)。 ??其声明的类是文件所声明的类的成员函数的参数或返回值时,因为函数的声明并没有使用到该类的定义,而函数的定义则很大可能使用到该类的定义。但是一般情况下,除非函数定义极短,否则成员函数的声明和定义一般是分离在.h文件和.cpp文件中的,所以可以说其声明的类是文件所声明的类的成员函数的参数或返回值时可以使用前置声明。 为什么使用前置声明
延伸: 1.定义式:就是.h文件中用include其他头文件 2.使用前置声明,在.h文件中用class,在.cpp还是要include其他使用到的头文件,虽然这样,还是可以减少部分文件的编译。表现在: 总之,此时任何接口类头文件产生的变化只会导致接口类头文件的变化而重新编译,以及Person实现文件由于include了接口类的头文件也要重新编译;而Person类头文件由于只使用了类的声明式,所以并不会重新编译,因此所有使用Person类的对象的文件也都不需要重新编译了,这样就大大降低了文件之间的编译依存关系。 // Person.h class PersonImp; class Person private: // Person.cpp // PersonImp.h class PersonImp ? ? ? ? ? ? ? ? //充当一个接口类,成员函数和Person相同,供 private:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 3:33:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |