1、当使用C++编写代码时,有一个常见的问题是如何在子类中调用父类的构造函数。下面是一个相关的C++面试题:
题目: 假设有一个基类Animal,其中包含一个带参数的构造函数和一个公共成员函数display()。请编写一个派生类Dog,继承自Animal,并实现自己的构造函数和display()函数。
要求:
- Dog类的构造函数应接受两个参数:name(狗的名字)和age(狗的年龄)。构造函数应该在初始化Dog对象时调用Animal类的构造函数,并将name参数传递给Animal类的构造函数来初始化基类的成员变量。
- Dog类的display()函数应输出狗的名字和年龄。
示例代码:
#include <iostream> #include <memory> #include <iostream> class Animal { protected: std::string name; public: Animal(const std::string& n) : name(n) { std::cout<<"1111111"<<std::endl; } void display() { std::cout << "Name: " << name << std::endl; } }; class Dog : public Animal { private: int age; public: Dog(const std::string& n, int a) : Animal(n), age(a) { std::cout<<"222222"<<std::endl; } void display() { Animal::display(); std::cout << "Age: " << age << std::endl; } }; class Cat : public Animal { private: int age; public: Cat(const std::string& n, int a) : Animal(n), age(a) { std::cout<<"3333333333"<<std::endl; } void display() { Animal::display(); std::cout << "Age: " << age << std::endl; } }; int main(){ Dog dog("Buddy", 3); Cat cat("axis", 4); dog.display(); cat.display(); return 0; }
输出:
1111111 3333333333 Name: Buddy Age: 3 Name: axis Age: 4
两个派生类分别继承了基类,但是对于基类互相不影响,先调用基类的构造函数。
1111111
3333333333
Name: Buddy
Age: 3
Name: axis
Age: 4
标签:面试题,name,Dog,C++,Animal,基类,构造函数 From: https://www.cnblogs.com/xzit201802/p/17473305.html