C++类接口和头文件概述

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

主要参考Effective C++

对于类中函数接口的描述

· 纯虚函数意味着仅仅继承函数的接口。如果类C声明了一个纯虚函数mf,C的子类必须继承mf的接口,C的具体子类必须为之提供它们自己的实现。
· 简单(一般普通的)虚函数意味着继承函数的接口加上一个缺省实现。如果类C声明了一个简单(非纯)虚函数mf,C的子类必须继承mf的接口;如果需要的话,还可以继承一个缺省实现。
· 非虚函数意味着继承函数的接口加上一个强制实现。如果类C声明了一个非虚函数mf,C的子类必须同时继承mf的接口和实现。实际上,mf定义了C的 "特殊性上的不变性"。


C++头文件状况
标准委员会决定为包装了std的那部分标准库构件创建新的头文件名。生成新头文件的方法仅仅是将现有C++头文件名中的 .h 去掉,方法本身不重要,正如最后产生的结果不一致也并不重要一样。所以<iostream.h>变成 了<iostream>,<complex.h>变成了<complex>,等等。对于C头文件,采用同样的方法, 但在每个名字前还要添加一个c。所以C的<string.h>变成了<cstring>,<stdio.h>变成 了<cstdio>,等等。最后一点是,旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C头文件则没有(以保持对C的 兼容性)。实际上,编译器制造商不会停止对客户现有软件提供支持,所以可以预计,旧的C++头文件在未来几年内还是会被支持。
· 旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在名字空间std中。
· 新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)
· 标准C头文件如<stdio.h>继续被支持。头文件的内容不在std中。
· 具有C库功能的新C++头文件具有如<cstdio>这样的名字。它们提供的内容和相应的旧C头文件相同,只是内容在std中。
看看字符串头文件理情况:<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数;<string>是包 装了std的C++头文件,对应的是新的string类;<cstring>是对应于旧C头文件的std版本。

【由浅入深C系列一】C标准库(C99 )接口头文件功能定义参考 C99标准库头文件参考 阅读详情

相关推荐

C++抽象编程——接口(1)——.h文件与.cpp文件的建立

在我们之前写过的程序中,都有这一句:#include <XXX>其中的< XXX >就是一个库。那么这里面到底包含了什么呢?这又是怎么实现的呢?接口与实现(Interfaces and implementations)当我们在C++中定义库时,需要提供两个部分。首先,我们必须定义接口(interface),它提供了客户端使用库所需的信息,但我们要注意留出关于库如何工作的详细信息(即注释)。 其次,要

redAnt的博客 3864

C++头文件相互依赖的问题——终极大法之接口隔离原则

我们通过接口的方式,解决了依赖具体某个的问题。上层模块,不能依赖具体的底层模块,而应该依赖于接口,依赖于抽象。由于前向声明而没有定义的是不完整的,所以B中只能包含:A的指针、引用、或者用于函数形参的指针引用,不能用来定义对象,或访问的成员。参考:https://blog.csdn.net/u010330109/article/details/120800927。抽象一层接口,让A实现此接口;B中用接口接收A的指针。ok,这样通过接口隔离原则,解决了头文件相互依赖的问题。为啥B中只能包含A的指针呢?

小孔明的专栏 957

1.2. A First Look at Input/Output——头文件的简单介绍

​例如,自定义数学工具函数声明在。

felicity_one的博客 1554

接口文件(通常是 .h 头文件)既可以用于定义符号为导入(import),也可以用于定义符号为导出(export)

通过条件编译的方式,你可以在同一个接口文件中定义符号为导入或导出,具体取决于是否定义了导出宏(例如这是一种常见的跨平台跨项目的做法,能够确保动态链接库的接口文件既适用于库的编译,又适用于库的使用。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 512

C++头文件定义的方法

新手在写C++程序定义的时候,可能会犯一个错误,就是在main函数文件里定义很多,一个文件中包含很多函数,这样程序看起来很冗杂。今天总结一下如何在C++中使用头文件来定义一个,并在另一个文件中进行引用。 部分基础知识 在一个C++程序中,有两种基础的文件 头文件(.h)【应该是head的缩写】 源文件(.cpp)【Cplusplus的缩写】 头文件中一般是声明,包括的成员,方法,还...

初见还是重逢的博客 4万+

C++头文件cpp文件的原理

1 C++编译模式 通常,在一个C++程序中,只包含两文件——.cpp文件.h文件。 .cpp文件被称作C++源文件,里面放的都是C++的源代码 .h文件则被称作C++头文件,里面放的也是C++的源代码,头文件不用被编译 C++语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次

呆呆象呆呆的博客 7488

C++头文件(.h)源文件(.cpp)都应该写些什么

   这个问题在许多C++程序员看来会很搞笑,“这么简单的问题还用得着你废话!”。但是由于本人生性愚钝,学C++的时候,确实花了很久的时间都搞不明白,只是会写一个文件,但不会写一个工程。而用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)源文件(.cpp)应该怎么写。   头文件(.h):    写的声明(包括里面的成员方法的

Dahlia 12万+

C++头文件(.h)源文件(.cpp)分别有什么用

这个问题在许多C++程序员看来会很搞笑,“这么简单的问题还用得着你废话!”。但是由于本人生性愚钝,学C++的时候,确实花了很久的时间都搞不明白,只是会写一个文件,但不会写一个工程。而用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)源文件(.cpp)应该怎么写。 头文件(.h): 写的声明(包括里面的成员方法的声明)、...

Yi Sun的博客 9504

C++ 在.h文件中包含头文件在.cpp文件中包含头文件有什么区别?前置声明

Note:A在编译的时候不需要拿到B的定义是因为这里面定义的是指针,而对于指针是不需要定义就可以进行内存布局的,在编译A的的声明的时候,在进行内存布局的时候是不需要拿到B的定义的。假设有两个 A B,A 包含了 B 的一个指针成员,并且在 A.cpp 文件中使用了 B 的成员函数。6、如果a.c包含了头文件a.h,a.h包含了头文件b.h,b.c也包含了b.h,那么当b.h发生改变时,a.cb.c都会重新编译。其中A有一个成员b是Class B的指针,这个时候可使用前置声明。

qq_40178082的博客 2529

C++笔记(十二)——头文件(.h)源文件(.cpp)写法

        用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 。下面就非常简洁明了地谈谈头文件(.h)源文件(.cpp)应该怎么写。        在.h文件中,主要是进行的定义,包括数据成员函数成员的声明(成员函数的定义也可以在这个文件中进行),一般的数据成员被声明为私有的,函数成员被声明为公有的。在.cpp文件中进行变量的赋值函数的实例化。细分的话,通常main...

qq_37764129的博客 3万+

h、cpphpp头文件之间使用区别

hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 hpp的优点不少,但是编写中有以下几点要注意: 1、是Header Plus Plus 的简写。 2、与*.h

Clement 1万+

C++头文件的编写--头文件中的写法

转载自:http://blog.csdn.net/lyanliu/article/details/2195632(标题:C++头文件(.h)源文件(.cpp)都应该写些什么) 头文件(.h):     写的声明(包括里面的成员方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。     在写头文件时需要注意,在开头结尾处必须按照如下样式加上预编译

i577060715的专栏 2万+

C/C++:头文件与cpp文件的声明/定义

一、头文件 1、 一般来说,头文件仅仅用于声明,相应的定义要放在对应的cpp文件中。  声明的内容一般可以是:1. 定义体;2.中的成员方法; 3. 外的函数; 4. 外的变量;5. 型。   一个文件(比如main.cpp)包含(#include)了一个头文件(比如item.h),就相当于声明了Item.h中声明的所有内容。 2、但是const常量,inline函数,static函数...

yongjunhe的专栏 5477

C++ 在.h文件中包含头文件在.cpp文件中包含头文件有什么区别?

(遇到一个问题,看学习视频的时候,总共有两个头文件以及两个cpp。 例 T1.h,T2.h,以及T1.cpp, main.cpp) T2.h中包含T1.h,T2.cpp包含T2.h, main中只引用了T1.h,但T1.h没有调用T2.h,运行时发现T2.h中声明的函数没有被main调用。但是视频中可以,暂时没有解决。。。 现有两个文件Test.h Test.cpp #include 在Test...

sakialice的博客 2995

C++头文件源文件详细介绍

C++中的头文件源文件详解 一、C++编译模式 通常,在一个C++程序中,只包含两文件——.cpp文件.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。 C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。....

lomo_2019的博客 6809

C++的源文件.cpp与头文件.h

一、C++编译模式 通常,在一个C++程序中,只包含两文件——cpp文件h文件。cpp文件被称作C++源文件,里面放的都是C++的源代码;h文件则被称作C++头文件,里面放的也是C++的源代码。 C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。 cpp文件里的东西...

终成大师的博客 3669
上一篇: 让普通C++类轻松支持IDispatch自动化接口
下一篇: C++类和接口的设计原则探讨
Gary@Tokyo
博客等级 码龄20年 315粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值