首页 > 编程语言 >C++面试题

C++面试题

时间:2023-06-11 18:12:37浏览次数:42  
标签:面试题 name Dog C++ Animal 基类 构造函数

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

相关文章

  • C/C++数学口算比赛系统[2023-06-11]
    C/C++数学口算比赛系统[2023-06-11]题目三数学口算比赛系统设计要求:适用于小学生数学口算比赛的系统。比赛题型分为两种:“四则简单运算”和“四则混合运算”,计算机随机出题,选手计时回答。要求进入每种题型比赛时,计算机均有提示,每人的得分情况随时更新。菜单格式如图。基......
  • c++面试学习2
    1.排序算法及其比较次数排序次数的数量级决定了排序算法的复杂度(作为个人纪录,下面图片写的不要清晰见谅) 2.fgets(s,n,f)函数的功能:原型是char*fgets(char*s,intn,FILE*stream);从流中读取n-1个字符,除非读完一行,s用来接收字符串,如果读取成功返回s的指针,否则返回NUL......
  • c++单件模式
    1.意图      保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.动机      对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机(printerspooler),只应该有一个文件系统和一个窗口管理器。一个数字滤波......
  • 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
    前段时间学习和了解了下Google的开源C++单元测试框架GoogleTest,简称gtest,非常的不错。我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们......
  • 用C++封装的ADO类
    用C++封装的ADO类作者:刘振海.H文件//ADO.h:interfacefortheCADOclass.////#if!defined(AFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_)#defineAFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_#if_MSC_VER>1000#pragmaonce......
  • 第四天打卡|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 面试题 02.07.
    24.两两交换链表中的节点:简单的交换 19.删除链表的倒数第N个节点: ●  面试题 02.07. 链表相交:这题没看过答案真的写不出来。太巧妙了  142.环形链表II:这题写过但是忘记怎么解的了还是看的答案。下次不能忘记  ......
  • 详解VOLATILE在C++中的作用
    VOLATILE的介绍     volatile类似于大家所熟知的const也是一个类型修饰符。volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化。volatile的作用就是用来进行多线程编程。在单线程中那就是只能起到限制编译器优化的作用。所以单线程的童鞋们就不用浪费精力看下......
  • [c/c++/OC]高质量的面试题及答案及注解
    一、选择题C语言:1.声明语句为inta[3][4];下列表达式中与数组元素a[2][1]等价的是(A)。A、*(a[2]+1)B、a[9]C、*(a[1]+2)D、*(*(a+2))+1a[2]<==>*(a+2)是等价的C两个数反过来了,D、1放进去2.请问经过表达式a=5?0:1的运算,变量a的最终值是(C......
  • C++面试八股文:struct、class和union有哪些区别?
    C++面试八股文:struct、class和union有哪些区别?某日小二参加XXX科技公司的C++工程师开发岗位5面:面试官:struct和class有什么区别?小二:在C++中,struct和class的唯一区别是默认的访问控制。struct默认的成员是public的,而class的默认成员是private的。面试官:struct、class和unio......
  • TVM面试题
    1、TVM中的调度器(Scheduler)是什么?请简要解释TVM调度器的作用和工作原理。TVM中的调度器(Scheduler)是负责将计算图映射到特定硬件目标上的组件。调度器在TVM中起着关键的作用,它决定了计算图的执行方式、并行化策略以及内存布局等,以优化计算性能和资源利用。TVM调度器的主要作用包......