gpt4 book ai didi

c++ - 类层次结构中的约束构造函数,C++

转载 作者:行者123 更新时间:2023-11-30 05:25:05 25 4
gpt4 key购买 nike

假设我有两个类,抽象类。

class A {
//code...
};
class B {
public:
B(A *x);
};

我按如下方式扩展了这两个类:

class A1 : public A {
};
class A2 : public A {
};

class B1 : public B {
public:
B1(A1 *x);
};
class B2 : public B {
B2(A2 *x);
};

这意味着一个B1对象可以只使用一个A1实例化,而B2必须需要一个B1 > 对象对吗?我不可能混合使用,例如使用 A2 实例化 B1。这是因为类 A,B 是抽象的。如果 A,B 不是抽象的呢?它改变了什么吗?

最佳答案

What about if A,B are not abstract? does it change something?

没有。这样做的主要影响是用户可以直接构造一个A。如果 B 的构造函数是公共(public)的,他们也可以从 A 对象实例化一个 B

但是,他们无法从 A 实例化 B1B2。由于它们的构造函数分别采用 A1A2,它们是 A 的子类,因此您不能从 A 实例化它们> 或来自 A 的错误子类。

关于c++ - 类层次结构中的约束构造函数,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com