选择大于努力,其本质是为了体现思考的重要性。

下载.jpeg

如果有其它OOP经验的学习而言,C++ 的面向对象确实有点令人抓狂。 我们都知道,面向对象编程的三大特征就是:

  • 封装
  • 继承
  • 多态

本篇文章我们主要先来讲解一下封装的概念。

所谓的封装,本质上还是依靠 类(class)结构体(struct),配合可见性来完成。

C++中控制可见性的just三种:

  1. public
  2. private(默认):这点跟其它OOP有较大区别
  3. protected

在这点上,比Java要友好一些。(PS:貌似仅此而已)


1. C++的类

#include <iostream>

//定义一个类
class Car
{
	// Notes: 默认是private
	int speed;

	private:
		// 价格
		double price;
	public:
		// 品牌
		const char* branch;
		
		void run()
		{
			std::cout <<"Running"<<std::endl;
		}
};

Notes: C++类中的所有内容默认是private;(跟大多数OOP正好相反)

But别忘了,C++是C的超集,所以理所应当也有结构体struct的概念。


2. C++的结构体


strcut Car
{
	int speed;
	const char* branch;
	
	private:
		double price;
};

Notes: **结构体(struct)**中的成员默认是public的。

3. 结构体(struct) 和 类(class)的使用场景?

一般来讲,功能复杂的情况用class,另外需要用到继承关系的情况下用class(因为在struct上使用继承,某些编译器报警告)。

关于struct的使用场景往往是只处理or表示一些数据

还是要明确一点,struct不是不可以使用继承,而是某些编译器会报警,but can run。