北航2022计软期末C++复(预)习

文章目录

  • 写在前面
  • 一、C++最基础的知识
  • 二、关于继承
    • 1.定义格式
    • 2.继承关系和访问限定符
    • 3.同名函数的隐藏
    • 4.切片
  • 三、往年题
    • 1. 2012年
    • 2. 2013年
    • 3. 2014年
  • 四、2022年计软C++编程题
  • 写在最后


写在前面

这篇文章只是为了帮助大家应付考试中C++的内容,学不到什么真正的知识,内容也只是根据12-14三年的期末试题来写。数据结构的内容可以看我其他的博客。


提示:以下是本篇文章正文内容

一、C++最基础的知识

C++是C语言的提升,C的内容在C++内规则完全不变。

#include  //包含io流,即输入输出流,相当于C语言里的stdio.h
using namespace std //展开命名空间,之后使用一些已经定义的关键字如cout,endl时可以直接用
class X //定义一个类,名字是X,相当与C语言里的结构体
cout //C++中的输出流,即在屏幕上打印内容,相当于C语言中的printf
endl //C++中的回车,相当于C语言中的'\n'
cout << "hello world!" << endl;//在屏幕上打印hello world!
new //相当于C语言中的malloc,用于动态开辟内存

二、关于继承

1.定义格式

代码如下(示例):

class A : public B //类A继承了类B,A内含有B内的所有内容,A是子类,public是继承方式,B是基类

2.继承关系和访问限定符

class内的成员什么访问限定福都不加时,默认是private。
北航2022计软期末C++复(预)习_第1张图片
北航2022计软期末C++复(预)习_第2张图片
实际上面的表格总结会发现,基类的私有成员在子类都是不可见的,也不可访问。基类的其他成员在子类的访问方式 == Min(成员在基类的访问限定符,继承方式),public > protected > private。下面以往年题为例分析。


3.同名函数的隐藏

子类和父类中有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义。(在子类成员函数中,可以使用 基类::基类成员 显示访问)


4.切片

派生类对象可以赋值给基类的对象/基类的指针。这里有个形象的说法叫切片。即把派生类中父类那部分切来赋值过去,而派生类多出来的东西不管。
北航2022计软期末C++复(预)习_第3张图片
Person是基类,Student是子类,将Student类型的变量赋值给Person后,Student中多出来的_No内容被丢掉不管。


三、往年题

1. 2012年

北航2022计软期末C++复(预)习_第4张图片
最后,由于Car中的velocity是protected,而继承方式是公有,所以显然可以在类内访问它(在类外不可以访问)。


2. 2013年

2013年的第一个题考了构造和析构的顺序,我之前的博客中有讲到,下面详细说第二道题。
北航2022计软期末C++复(预)习_第5张图片


3. 2014年

2014年的题偷个懒,给大家练手吧。


四、2022年计软C++编程题

(这部分的代码是我根据记忆写的,但是virtual这个考点是确定的)

class vehicle
{
public:
	int color;

	void SetColor(int c)
	{
		color = c;
	}
	//virtual void run()
	void run()
	{
		cout << "vehicle running!" << endl;
	}
private:
	int number;
};

class car : public vehicle
{
protected:
	int velocity;
public:
	void run()
	{
		cout << "car running!" << endl;
	}
};

class SportsCar : public car
{
public:
	void run()
	{
		cout << "SportsCar running!" << endl;
	}
};

int main()
{
	vehicle* vec;
	vec = new car;
	vec->run();
	delete vec;
	
	vec = new SportsCar;
	vec->run();
	delete vec;

	SportsCar sc;

	return 0;
}

(1)运行结果:很简单,和之前的题一样,答案是
vehicle running!
vehicle running!
(2)若vehicle里的run函数前面加一个virtual(如代码中注释所示)则运行结果如何
加上virtual后,vec就不调用vehicle里的run,而是分别调用car类和SportsCar类里的run函数,所以结果是
car running!
SportsCar running!
(3)sc对象能访问哪些成员变量:
同往年题,答案是velocity


写在最后

计软背不下来又不想摸鱼,写篇博客帮助大家考前学习C++。文章是我匆忙赶出来的,难免有些纰漏,请多包涵,希望能帮到大家。

最后,感谢阅读。

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