我是C ++的新手,并且学习了这门语言的基础知识。我在一本书中读到了这一行"实例化派生类对象开始了一系列构造函数调用"。有人可以解释一下这个陈述的含义是什么吗?书中没有给出解释。请帮忙。
答案 0 :(得分:3)
这意味着如果您有基类和派生类:
struct A
{
A() { std::cout << "constructing A\n"; }
};
struct B : A
{
B() { std::cout << "constructing B\n"; }
};
然后实例化派生类:
int main()
{
B b;
}
不仅为派生类调用构造函数,还为基类调用构造函数:
constructing A
constructing B
并且自动调用的构造函数的这个“链”越长,你拥有的基数越多(即继承树越深)。
答案 1 :(得分:1)
您可以尝试定义对象层次结构,并自己观察构造函数执行的效果。这是一个人为的例子:
#include <iostream>
struct A
{
A(int nValue) {
std::cout << "A: " << nValue << std::endl;
}
};
struct B: public A
{
B(int nValue, double dValue)
: A(nValue) {
std::cout << "B: " << dValue << std::endl;
}
};
struct C: public B
{
C(int nValue, double dValue, char chValue)
: B(nValue, dValue) {
std::cout << "C: " << chValue << std::endl;
}
};
int main()
{
C cClass(5, 4.3, 'R');
return 0;
}
你能想象更复杂的层次结构吗?其他类型的构造函数会发生什么?破坏者怎么样?
答案 2 :(得分:0)
派生类是从另一个类继承的类。我想你在某种程度上熟悉了继承。派生类继承基类的构造函数,您只需“覆盖”它。因此,当您从派生类中实例化一个对象时,首先调用基类的构造函数,然后调用派生类的构造函数。
答案 3 :(得分:0)
要instantiate创建实例的内容:
实例化
...
(传递)用具体实例表示(某事)。
在像C ++这样的基于类的语言中,你有 classes ,它们充当蓝图,然后你有对象,它们是特定类的实例。
例如,假设您有一个班级A
。如果您随后声明了类a
的对象A
,那么您实例化类A
的对象。