面向对象的程序设计

本文详细探讨了面向对象程序设计的关键概念,包括OOP概述、基类与派生类的定义、虚函数的使用、抽象基类的作用、访问控制与继承的关系、类作用域在继承中的影响、拷贝控制和对象销毁的机制,以及如何在容器中有效应用继承。
摘要由CSDN通过智能技术生成

一、OOP概述

面向对象的程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定;

继承:基类、派生类、虚函数
	派生列表:首先是冒号,后面紧跟以逗号分隔的基类列表,每个基类前面可以有访问说明符;
	派生类可以在重新定义的虚函数前面加 virtual,也可以不加;
	派生类可以显示的注明使用哪个成员函数改写基类的虚函数,做法是在参数列表后加 override 关键字;

动态绑定:
	当使用基类的指针或引用调用一个虚函数时,将发生动态绑定,由于在运行时发生绑定,所以又称为运行时绑定;

二、定义基类和派生类

1、定义基类
	基类通常都应该定义虚析构,即使该函数不执行任何操作也是如此;
	构造函数和静态函数不可以是虚函数;
	virtual 只能出现在声明中,不能出现在定义中;
	如果基类把函数声明成虚函数,则在派生类中隐式的也是虚函数;
	派生类能访问公有成员,不能访问私有成员;
	派生类能访问受保护成员,而其他用户则不能访问;

2、定义派生类
	override 关键字放在 const 关键字和引用限定符后面;
	能将基类的指针或引用绑定到派生类对象中的基类部分,编译器会隐式的执行派生类到基类的转换;
	在派生类中含有与其基类对应的组成部分,是继承的关键所在;
	派生类的构造函数:
		派生类必须使用基类的构造函数初始化基类部分;也就是每个类控制它自己的成员初始化部分;
		派生类构造函数通过初始化列表将实参传递给基类构造函数;形式是类名加圆括号内的实参列表;
		首先初始化基类部分,然后按照声明顺序依次初始化派生类的成员;
		class BB : AA
		{
		public:
			BB(int a, int b) :AA(a), b(b) {}
		private:
			int b;
		}
		派生类可以访问基类的公有成员和受保护成员;
	继承与static成员:
		如果基类定义了一个静态成员,则在整个继承体系中只存在该成员的唯一定义;
		如果基类的static成员是private的,则派生类无权访问;如果是public的,则既可以通过基类使用,也可以通过派生类使用;
	派生类的声明:
		声明中包含类名,但不包含派生列表;一个类不能派生自身;
		class a : a //错误
		{};
	被用作基类的类
		仅仅声明而没被定义的类不能用作基类;
		一个类是基类的同时也可以是派生类;
		最终派生类将包含直接基类子对象以及每个间接基类的子对象;
	防止继承的发生:
		防止一个类作为基类,可以在类名后面加关键字 final ,但可以继承别的类;
		class a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值