C++:实现copy-constr定义的接口

Pau*_*nta 6 c++ oop inheritance interface

接口类是否有任何方法可以强制执行复制构造函数的定义,也可能是其他构造函数的定义?在我的例子中,我有一个IResource纯抽象类,我希望所有实现此接口的类都定义一个copy-constr,一个用于从文件加载的构造函数,以及一个用于从内存加载的构造函数.

fal*_*tro 5

为了构造一个对象,你需要知道要使用的具体类(如何知道要分配多少内存,或者使用哪个虚拟表等等?).因此,在处理构造函数时,接口不起作用,并且您不能使用接口(纯虚拟)来强制存在这样的构造函数.当你想到它时,它是很自然的,虚拟只有在你有多态对象时才有效,即在实例化之后.任何引用您的IResource接口的人都只会处理实例化的对象,而不会触及构造函数.

如果您愿意,可以使用模板对内容强制执行这些约束.通过简单地从模板化函数调用复制构造函数,如果编译器遇到使用没有复制构造函数的类型的模板实例化,它将会抱怨.