class A { public:  A() {   num++;  }  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; class B : public A { public:  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; int main() {  A* a = new B();  a->print(); }以上输出结果是什么?

区块链毕设网qklbishe.com为您提供问题的解答

class A
{
public:
 A() {
  num++;
 }
 virtual void print() { std::cout << num; }
private:
 int num = { 0 };
};
class B : public A
{
public:
 virtual void print() { std::cout << num; }
private:
 int num = { 0 };
};
int main()
{
 A* a = new B();
 a->print();
}以上输出结果是什么?
这段代码中,基类`A`有一个构造函数,会在创建对象时使`num`成员变量加1。类`B`继承自`A`并重写了`print`方法,但也有自己的`num`成员变量。在`main`函数中,创建了一个指向`B`类实例的`A`指针`a`,然后调用`print`方法。 然而,这里存在一个问题:基类`A`的构造函数会执行,导致`A`中的`num`加1,但`B`类中定义了自己的`num`,它不会被基类构造函数初始化。因此,`B`类中的`num`保持默认值0。 当通过`A* a`指针调用`print`时,由于`B`重写了`print`方法,实际调用的是`B`的`print`。这将打印`B`类中的`num`值,即0。
03:25

以上就是关于问题class A { public:  A() {   num++;  }  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; class B : public A { public:  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; int main() {  A* a = new B();  a->print(); }以上输出结果是什么?的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » class A { public:  A() {   num++;  }  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; class B : public A { public:  virtual void print() { std::cout << num; } private:  int num = { 0 }; }; int main() {  A* a = new B();  a->print(); }以上输出结果是什么?