C++ 继承

1、继承相关函数功能实现

实现一个图形类(Shape),包含受保护成员属性:周长、面积,公共成员函数:特殊成员函数

定义一个圆形类(Circle),继承自图形类,包含私有属性:半径,公共成员函数:特殊成员函数、以及获取周长、获取面积函数

定义一个矩形类(Rect),继承自图形类,包含私有属性:长度、宽度,公共成员函数:特殊成员函数、以及获取周长、获取面积函数

在主函数中,分别实例化圆形类对象以及矩形类对象,并测试相关的成员函数。

#include 

using namespace std;
//1、图形类
class Shape
{
protected:
    double perimeter;     //周长
    double area;     //面积
public:
    Shape(){}    //无参构造
    Shape(double a,double b):perimeter(a),area(b)
    {cout<<"Shape::有参构造"<

C++ 继承_第1张图片

这段代码实现了一个简单的图形类和圆形、矩形两个派生类。

其中,图形类有周长和面积两个成员变量,圆形类和矩形类分别继承了图形类,并重写了计算周长和面积的函数。在主函数中,通过创建圆形和矩形对象,调用相应的函数来计算周长和面积并输出结果。

考察知识点:继承、特殊成员函数

 2、笔试面试常见题型之c++

(1)面向对象的三大特征

 面向对象的三大特征:封装、继承、多态,如果有第四大特征,外加一个抽象

(2)什么是命名空间,为什么要使用命名空间

 主要作用是解决多人协同开发程序时名字污染(名字冲突)问题

  所谓命名空间,其实相当于给名字加个“姓氏”

(3)谈谈C++中的友元

友元包括友元函数和友元类,全局函数作为友元函数格式:在类内进行全局函数的声明:friend 函数头;

-友元是单向的,A将B设置成友元,则A允许B访问自己的成员,而B不一定允许A访问其成员

-友元不具有传递性:A是B的朋友,B是C的朋友,那么A不一定是C的朋友

-友元不具有继承性:父类的朋友不一定是子类的朋友

-友元破坏了类的封装性,使得访问权限形同虚设,所以不在万不得已的情况下,尽可能不使用友元

-必须使用友元的情况:插入和提取运算符重载时,需要使用全局函数作为友元函数

(4)C++中的类提供的特殊成员函数有哪些

系统提供---为什么要显性定义-----情况

析构函数:类对象----类对象以外的成员----显性对像

(6)C++中的静态成员函数和静态成员变量

回答步骤:为什么使用静态成员、静态成员如何定义、静态成员如何使用

静态成员与非静态成员的区别

(6)C++中深浅拷贝问题

回答步骤:发生的背景、浅拷贝、浅拷贝的缺陷、深拷贝如何实现

1、在一个类中,如果没有显性定义拷贝构造函数,系统会默认提供一个拷贝构造函数,来完成类对象之间的简单赋值,这个拷贝构造函数是一个浅拷贝,如果类中无指针成员,那么使用该拷贝构造函数没有问题

2、如果类中有指针成员并且指向堆区空间,使用浅拷贝就会造成对同一个堆区空间的多次释放问题,会产生double free的段错误

3、此时就需要显性定义拷贝构造函数完成深拷贝:在拷贝构造函数的初始化列表中,给自己的指针成员重新申请出一个空间,将原对象的指针成员指向的空间内容赋值过来,即可完成深拷贝

 知识总结:

C++ 继承_第2张图片

你可能感兴趣的:(c++,算法,开发语言)