选择大于努力,其本质是为了体现思考的重要性。
如果有其它OOP经验的学习而言,C++ 的面向对象确实有点令人抓狂。 我们都知道,面向对象编程的三大特征就是:
- 封装
- 继承
- 多态
本篇文章我们主要先来讲解一下封装的概念。
所谓的封装,本质上还是依靠 类(class),结构体(struct),配合可见性来完成。
C++中控制可见性的just三种:
- public
- private(默认):这点跟其它OOP有较大区别
- 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。