面向对象编程考前抱佛脚

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程考前抱佛脚相关的知识,希望对你有一定的参考价值。

多继承,虚基类,模板编程不考。考试范围10-15章。

第10章:类和对象

10.1 类和对象的定义

类是一种类型,该类型的变量成为对象。

一个类的定义:
private可缺省。类定义后的大括号要有分号;

class Person
{
	private:
		string name;
		int age;
	public:
		Person(string a,int b)
		{
			name=a;
			age=b;
		}
		string GetName()
		{
			return name;
		}
		int GetAge()
		{
			return age;
		}
};

关于类内外访问权限:类内都可访问,类外只有public的可访问。
在这里插入图片描述
若想在类内声明,类外定义:
格式是:

返回类型 类::函数名(参数列表)
class Person
{
	private:
		string name;
		int age;
	public:
		Person(string a,int b)
		{
			name=a;
			age=b;
		}
		string GetName();
		int GetAge();
};

string Person::GetName()
{
	return name;
}
int Person::GetAge()
{
	return age;
}

关于对象的存储空间:
定义对象后,对象数据成员占用不同的存储空间;该类的所有对象的同一成员函数共享同一代码空间

定义类和对象的相关说明:
1、类中数据成员的类型:自身类的对象不能做数据成员。
2、类的使用在前,定义在后,则需要声明。如:

class B;

3、定义对象有三种方法:
定义完成后定义对象;(常用)
定义类的同时定义对象:(如代码有三个对象了)

class A
{
	...
}a1,a2,a3;

定义无类名对象(只能定义一次,没啥用)

class 
{
	...
}a1,a2,a3;

4、结构体与类的区别:
结构体缺省是public;类中缺省是private;
结构体是类的特例。

10.2 初始化对象,撤销对象

对类公有成员的初始化:
可以直接这样。

Person p={"aaa",12};

构造函数
调用时机:产生新对象时自动调用。

//类内定义:
类名(参数列表)
{...}
//类外定义
类名::类名(参数列表)
{...}

//eg:
//类内:
Person(string a,int b){name=a;age=b;}
//类外:
Person::Person(string a,int b){name=a;age=b;}

构造函数特点:
1、构造函数是成员函数,可在类内/外。
2、构造函数:函数名与类名相同,无返回值。
3、构造函数可重载。
4、一般是public的。
5、创建对象时系统自动调用函数。

析构函数
撤销对象时,自动调用。

//类内:
~ClassName(){...}

//类外:
ClassName::~ClassName(){...}

析构函数特点
1、是成员函数,可在类内/外 定义
2、一般是public
3、是特殊函数,函数的名字是在类名前加~;无返回值,无参数
4、不可重载。
5、可被显式调用,也可被系统自动调用,其中:
对象是系统自动创建的,在对象作用域结束时系统自动调用析构函数。
对象是new创建的,在使用delete释放对象时,delete会自动调用析构函数。
会自动调用析构函数。

缺省构造函数
定义类时若没定义构造函数,则系统自动生成缺省构造函数,此构造函数不进行任何操作。

缺省构造函数有两种形式:没有参数/有缺省值。缺省构造函数只能有一个。否则会矛盾。
如下,编译系统不知道调用哪个。

Date::Date()
{year=2021;month=6;day=16;}
//
Date::Date(int y=2017,int m=6;int d=16)
{year=y;month=m;day=d;}

若已经定义了构造函数,系统不会自动生成缺省构造函数。

缺省析构函数
要注意的就是:若类中有动态申请的数据空间就要自己定义析构函数(delete)。
在这里插入图片描述
p41

以上是关于面向对象编程考前抱佛脚的主要内容,如果未能解决你的问题,请参考以下文章

NOIP考前临时抱佛脚(算是考前日记吧)

洛谷 P2392 kkksc03考前临时抱佛脚

[luogu p2392] kkksc03考前临时抱佛脚

搜索kkksc03考前临时抱佛脚

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程