仅通过继承就可以轻松实现这一目标.但问题是基类本身并不知道这些值.相反,它们需要作为参数传递.但是,由于派生类不需要处理这个问题,因此通过派生构造函数对参数进行隧道处理是不可取的.
我能想到的唯一解决方案是静态地提供信息,以便基类可以在没有帮助的情况下获取它们.但我想避免这种情况.
有没有办法首先创建和初始化基类,然后将实例扩展到派生类型?如果没有,我如何使用C的可用功能实现此创建顺序和依赖项?
#include <string>#include <iostream>using namespace std;class Base {public: Base(string name,int age) : name(name),age(age) {}protected: const string name; int age = 0;};class Derived : public Base { Derived() { // No parameters here,no call to base constructor cout << "My name is " << name << " and I'm " << age << "." << endl; }}Base base("Peter",42);Derived derived(base); // "My name is Peter and I'm 42."解决方法 “信息应该就在那里”听起来像是它允许两种可能的解释:
>信息实际上是全局不变的,可以硬编码:
Derived() : Base("Peter",42) {}
>你真正的意思是“基地应该就在那里”:
Derived(const Base & b) : Base(b) {}总结
以上是内存溢出为你收集整理的c – 有没有办法从基础实例创建派生实例?全部内容,希望文章能够帮你解决c – 有没有办法从基础实例创建派生实例?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)