gpt4 book ai didi

c++ - 以基实例为参数的派生类的构造函数

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

我有这个代码:

#include <stdio.h>

class A
{
public:
A() { printf("A::A()\n"); }
A(const A &a) { printf("A::A(A &a)\n"); }
A &operator=(const A &a) { printf("A::operator=\n"); }
};

class B : public A
{
public:
B() { printf("B:B()\n"); }
B(const A &a) : A(a) { printf("B::B(A &a)\n"); }
B &operator=(const B &b) { printf("B::operator=\n"); }
};

int
main(int argc, char *argv[])
{
printf(">> B b1\n");
B b1;
printf(">> b2 = b1\n");
B b2 = b1;
return 0;
}

为什么行 B b2 = b1 不调用构造函数 B::B(const A &a) 而是调用 A::A(const一个 &a)?我如何告诉编译器这样做?

最佳答案

因为它调用了 B::B(const B &a),而 B::B(const B &a) 又调用了 A::A(const A &a)。你在类里面错过了 B::B(const B &a) 所以你看不到它。

关于c++ - 以基实例为参数的派生类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3187675/

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