java C++文件头文件如果包含私有成员变量声明,它怎么能被看作类的“接口”呢?
试图在长期Java的java下重新学习C++,我已经{A1} on,而且还模糊地记得,当一个类在一个头文件中声明并在CPP文件中定义时,它将它的接口(H文件)从它的实现(CPP文件)中分离出来。p>
但是,如果h文件包含私有成员变量声明,它又如何被视为一个接口呢?成员变量的选择限制了实现,不是吗?不同的实现可能使用完全不同的变量集
例如,一个复数类可以用实变量和虚变量实现,也可以用大小变量和参数变量实现,但它支持相同的getter和setter集合以及您所拥有的东西
分离接口和实现的唯一方法不是从类似于Java的interface
的基类继承纯虚拟对象吗
# 1 楼答案
与其他任何事情一样,也存在权衡。对于接口(更准确地说,它变成了一个模板类IMHO),必须为每个子类反复定义每个函数;这有助于提高运行时性能。您还可以创建一个完全由纯虚函数组成的抽象基类;这在很多方面确实是一个接口;除了你还承担了所有虚拟函数查找的费用外,有些人不喜欢这样
你可以双向争论,直到奶牛回家。。。人们就这些东西写了详尽的论文
最后,我要说的是,对于什么是接口,您对Java的理解过于字面化了。虽然在标题中通常没有一个具体的东西字面上说“我是一个接口”,但它经常存在,并且可以从标题中收集和发现
作为一个接口,它也是值得注意的,因为有了头和共享对象,您就可以知道如何“使用”类并根据它们进行编译,而无需源代码。因此,这也是一个界面;只是并不总是像在java中看到的那样“纯粹”