C++自动驾驶岗面试准备

一、C++的三大特性

1 封装

封装
封装的意义
封装是C++面向对象的三大特征之一

封装的意义:

将属性和行为作为一个整体,表现生活中的事物
类中的属性和行为,我们统称为成员

属性-成员属性-成员变量

行为-成员函数-成员方法

封装的意义二
类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种

public——公共权限——成员类内可以访问,类外可以访问
protected–保护权限——成员类内可以访问,类外不可以访问
private——私有权限——成员类内可以访问,类外不可以访问

2 继承

2.1 概念

继承
继承是面向对象三大特性之一
子类可以继承或拥有父类的所有内容
普通实现:

#include<iostream>
#include<string>
using namespace std;

//普通实现页面

//java页面
class Java
{
public:
	void header()
	{
		cout << "首页、登录注册" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作" << endl;
	}
	void left()
	{
		cout << "java、python、c++" << endl;

	}
	void contenet()
	{
		cout << "java学科视频" << endl;
	}
};
class Python
{
public:
	void header()
	{
		cout << "首页、登录注册" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作" << endl;
	}
	void left()
	{
		cout << "java、python、c++" << endl;

	}
	void contenet()
	{
		cout << "python学科视频" << endl;
	}
};
class Cpp
{
public:
	void header()
	{
		cout << "首页、登录注册" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作" << endl;
	}
	void left()
	{
		cout << "java、python、c++" << endl;

	}
	void contenet()
	{
		cout << "c++学科视频" << endl;
	}
};
void test()
{
	cout << "java" << endl;
	Java java;
	java.header();
	java.footer();
	java.left();
	java.contenet();

	cout << endl;

	cout << "python" << endl;
	Python python;
	python.header();
	python.footer();
	python.left();
	python.contenet();

	cout << endl;

	cout << "cpp" << endl;
	Cpp cpp;
	cpp.header();
	cpp.footer();
	cpp.left();
	cpp.contenet();
}
int main(void)
{
	test();
	system("pause");
	return 0;
}

继承方法实现

#include<iostream>
#include<string>
using namespace std;

//公共页面
class BasePage
{
public:
	void header()
	{
		cout << "首页、登录注册" << endl;
	}
	void footer()
	{
		cout << "帮助中心、交流合作" << endl;
	}
	void left()
	{
		cout << "java、python、c++" << endl;

	}
};
//普通实现页面

//java页面
class Java : public BasePage
{
public:
	void contenet()
	{
		cout << "java学科视频" << endl;
	}
};
class Python : public BasePage
{
public:
	void contenet()
	{
		cout << "python学科视频" << endl;
	}
};
class Cpp : public BasePage
{
public:
	
	void contenet()
	{
		cout << "c++学科视频" << endl;
	}
};
void test()
{
	cout << "java" << endl;
	Java java;
	java.header();
	java.footer();
	java.left();
	java.contenet();

	cout << endl;

	cout << "python" << endl;
	Python python;
	python.header();
	python.footer();
	python.left();
	python.contenet();

	cout << endl;

	cout << "cpp" << endl;
	Cpp cpp;
	cpp.header();
	cpp.footer();
	cpp.left();
	cpp.contenet();
}
int main(void)
{
	test();
	system("pause");
	return 0;
}

总结:
继承的好处:减少重复代码

语法:class 子类:继承方式 父类

子类也称派生类

父类也称基类

派生类中的成员,包含量大部分

一类是从基类继承过来的,一类是自己增加的成员。

从基类继承过来的表现其共性,而新增加的成员体现其个性。

继承方式
继承的语法——class 子类 :继承方式 父类

3 多态

3.1 多态的概念

多带的概念主要是:通俗的说就是,多种形态。具体的说就是当不同的对象去完成时,会产生不同的状态效果。
例如:买火车票这个行为,当普通人买票时,是全价买票;当学生买票时,是半价买票,当是军人等时,是优先买票。

3.2 多态的定义及实现

3.2.1 重写/覆盖 的要求

重写或覆盖:是返回值、函数名、参数列表完全相同。
子类中有一个跟父类完全相同的虚函数,子类的虚函数重写了基类的虚函数

注意:重载:重载是函数名相同,而参数列表不同为重载。包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。不能以返回值不同为重载。

3.2.2 多态的两个要求

1.被调用的函数必须是虚函数,子类对父类的虚函数进行重写 (重写:三同(函数名/参数/返回值)+虚函数)
2、父类指针或者引用去调用虚函数。

注释:
虚函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

grant_wtt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值