C++面向对象知识

本文介绍了C++中的类和对象的基本概念,包括访问修饰符如public、private和protected的作用。接着讨论了继承,分为公有、保护和私有继承,以及多继承的情况。多态性部分涉及重写、静态多态和动态多态,特别是虚函数的应用。还提到了纯虚函数和抽象类的概念,以及接口的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)类与对象

  • 类的定义
  • 对象的定义
  • 访问数据成员

class  class_name

{

        private/public/protected:

                int a,b,c;

                function{ }

}; 

class_name bb;

class_name *pp; 

bb.function();

pp->function() 

public: 能被类成员函数、子类函数、友元访问,也能被类的对象访问。
private: 只能被类成员函数及友元访问,不能被其他任何访问,本身的类对象也不行。
protected: 只能被类成员函数、子类函数及友元访问,不能被其他任何访问,本身的类对象也不行。

(二)继承

  • 基类与派生类
  • 访问控制与继承
  • 继承类型
  • 多继承 

 简述:一个类可以派生自多个类。访问修饰符是 public、protected 或 private 其中的一个。如果没有写访问修饰符,则默认为private。派生类可以访问基类中所有的非私有成员。

一个派生类继承了所有的基类方法,但下列情况除外:

  • 基类的构造函数、析构函数和拷贝构造函数。
  • 基类的重载运算符。
  • 基类的友元函数。

定义形式入下:

class  派生类名称:访问修饰符  基类名称

        

};

1、公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。

2、保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。

3、私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。

一个子类可以有多个父类:

class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};

(三) 多态

一、重写

1、非虚函数重写:子类重新定义父类中有相同名称参数的非虚函数; 

2、虚函数重写:子类重新定义父类中有相同返回值、名称参数的虚函数; 

二、多态的分类

1、静态多态:函数重载、泛型编程;

2、动态多态:虚函数。

静态多态编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数就调用,没有的话就会发出警告或者报错;

动态多态在程序运行时根据基类的引用(指针)指向的对象来确定自己具体该调用哪一个类的虚函数。

三、纯虚函数

(1)只在基类中声明虚函数,并不需要在基类中定义函数体,语法格式:virtual void funtion1()=0;

(2)“=0”是告诉编译器当前是声明纯虚函数,因此并不需要定义函数体。

(3)纯虚函数被实现后成为虚函数;

(4)基类中的纯虚函数就是个接口,纯虚函数不能被调用,它的存在只是为了在派生类中重新实现该方法

(5)c++ 规定虚析构函数必须包含声明与实现(在对象销毁前,基类中的析构函数最后一个被调用,若此时没有对应的函数实现,显然是不行的);

四、抽象类

(1)用于表示现实世界中的抽象概念

(2)是一种只能定义类型,而不能创建对象的类;但是,可以有抽象类指针 或 接口类指针,当它指向子类对象时就会发生多态;

(3)抽象类只能用作父类被继承,子类必须实现纯虚函数的具体功能;

(4)c++语言中没有抽象类的概念,但是可以通过纯虚函数实现抽象类;

(5)一个c++类中存在纯虚函数就成为了抽象类;(判断条件)

(6)如果子类没有实现纯虚函数,则子类成为抽象类。

五、接口

(1)类中没有定义任何的成员变量;

(2)所有的成员函数都是公有的纯虚函数;(判断条件 1 + 2)

(3)接口是一种特殊的抽象类;

   一个类全是纯虚函数就是接口;

  一个类部分是纯虚函数就是抽象类;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值