下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }
区块链毕设网qklbishe.com为您提供问题的解答
下面 C++ 代码的运行结果为()
#include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << "Base: " << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << "Drive: " << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }
这部分内容主要涉及c++的继承 虚函数机制。
在默认的情况,基类和派生类可以具有重名的成员变量和成员方法。
前者是两个独立的变量,需要分别进行初始化处理。方法可以通过重写来实现不同的处理。
第29行声明的Drive类型 变量d会同时具有基类Base和派生类Drive的m_value成员变量。
Drive类的m_value通过它的构造函数进行初始化,可以正常。
而Base附带的m_value也需要初始化,但是Base类当中并没有无参的默认初始化构造函数,而是一个需要参数的构造函数。
Base(int value) : m_value(value) {}
在我们声明派生类的时候,如果基类的成员变量需要初始化,如果我们没有显式调用基类的初始化构造函数,
Drive(int value) : m_value(value) {}
则会调用基类的默认初始化构造函数(也就是无参那种) 对Base的成员变量进行初始化,
但是在这个例子当中Base的构造函数是有参的,所以是没法按照默认的初试化。
应该写成这样,手动调用基类的构造函数。
Drive(int value) : m_value(value), Base(value) {} ;
才能正常运行。
(后面是我修改后代码的运行逻辑)
这样的话,基类的value初试化为1, Drive的初试化为1.
add方法调用时,因为是基类方法,所以访问基类变量,value变成3.
print的时候,根据实际的变量类型调用print,
是drive类型则调用drive的print,输出drive的value为1.
48:41
以上就是关于问题下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 下面 C++ 代码的运行结果为() #include<iostream> using namespace std; class Base { public: Base(int value) : m_value(value) {} virtual void add(int value) { m_value += value; } virtual void print() { cout << “Base: ” << m_value << endl; } private: int m_value; }; class Drive :public Base { public: Drive(int value) : m_value(value) {} virtual void print() { std::cout << “Drive: ” << m_value << std::endl; } private: int m_value; }; int main() { Drive d(1); d.add(2); d.print(); return 0; }