类和对象
引言
写这篇文章的时候,我已经通过C++开发很久了,现在到了快实习的时候,针对我自己对于C++开发中遇到的问题,以及我自己的理解,现在通过博客来对过去的知识进行回顾和总结,如果我写的内容对你有一些帮助,那真的泰裤辣。
面相对象和面相过程
我们熟知的C++的“先驱”或者说C++的“爹”C语言是一种面向过程的编程语言,但是C++是一种面向对象的编程语言,最开始C++的设计者本贾尼博士只是想要设计一个面向对象版本的C语言(C with class) ,这里的class就是类的意思,虽然现在的C++显然不是简单的C with class,但是从设计的初衷就可以看出class对于C++的重要性。
面相对象和面相过程的简单理解。
现在想要组织一个篮球比赛,不同的思想应该怎么做呢?
- 如果是C语言 : 那么我会针对篮球比赛中的过程通过函数描述出来,比如第一天怎么样,第二天怎么样… , 通过函数实现了这样的过程。
- 如果是C++ : 那么我会将篮球比赛描述成一个项目,任何的项目内容只在项目中发生,外部发生的事情不能影响这个项目。
面相对象好处:只要我需要组织一个篮球赛,那么我们的就只需要创建一个篮球项目即可。组织性更加的完善。
类的定义
class Date
{
int month_;
int day_;
int year_;
};
这是一个简单呢的累的定义如果将class改成struct ,那么他和我们C语言中的结构体没有什么区别。
那么我们C++ class和C struct 有什么区别吗?
当然有啦,而且区别可不是一般的大。
访问限定符
在C++中引入了访问限定符的概念,在C语言中我们显然结构体通过. ,指针通过->直接访问内部的成员,但是C++不行,或者说不建议。
首先,封装的思想就是想要实现类和外界联系的隔离性,所以一般C++的class是不支持直接访问类内成员的,也就是类内成员是protect的,但是,既然是C plus plus ,当然支持C,那么怎么做呢?
class Data
{
public:
int month_;
int day_;
int year_;
};
显示表示数据是public即可,当然public可以修改成private或者protected。
- public修饰的成员在类外可以直接被访问
- protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
- 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
- 如果后面没有访问限定符,作用域就到 } 即类结束。
- class的默认访问权限为private,struct为public(因为struct要兼容C)
这里我们不具体讲解protected,在继承和多态会继续讲解,你现在只需要明白,protected == private就行。
类的作用域
你在创建class的时候不是有一个{}吗,你只要记住,只要是{}就可以表示一个作用域,无论是namespace还是其他,一个作用域中的数据和函数可以互相访问,前提是你在后面,C++的编译器造就了一个历史遗留问题,比如a, b想要调用一个函数叫做plus(int left,int right)的时候一定得保证plus在他们之前定义,但是也有个解决方式就是先声明。 但是类不同,类中的数据可以在任何位置访问,因为他们是一个整体,比如上方定义的a, b也能访问下面的plus函数
class PlusTool
{
// 这是一个作用域
int a_;
int b_;
int plus(int left,int right) { return left + right; }
void test() { plus(a_,b_); }
};
PlusTool pt;
pt.test();
总结
本篇简单谈谈了类,读者已经建立了一个针对类和对象以及面相对象的一个感性的简单的认识,在下一篇中我将具体谈到如果操作一个类,或者说如何设计出一个类。

2095

被折叠的 条评论
为什么被折叠?



