目录
前言:
C++与它的老朋友C语言不同,C语言是面向过程的,主要关注的是分析解决问题的步骤,通过不断的用函数调用去解决问题。
而C++是一款面向对象的语言,把问题拆解成许多对象,通过对象间的交互来解决问题。
拿同样是洗衣服这件事情来举例,C语言是关注:拿洗衣盆->放水->放衣服->放洗衣粉->手搓......的过程。而C++是关注:人,洗衣粉,衣服,洗衣盆这四个对象,通过对象自己间的交互来完成洗衣服这件事情。
一、类概念的引入
C语言中有个结构体的概念,可以代表人,玫瑰花,狮子等不同的事物。但是我们只能在这里面定义成员变量,也就是说,我们在C语言中定义的人,只会被我们赋予年龄,性别,身高等属性。但在C++中,我们可以在结构体中额外定义成员函数,相当于我们赋予了人抬手,蹲下,做饭,结婚等动作。
这使不同的结构体之间可以有所交互,这就是C++的面向对象特性的主要特点。
//C语言中的人
struct People
{
int age;
char name[10];
char gender[10];
//......
};
//C++中的人
struct People
{
public:
void Grow_up();//长大
void Get_Marry();//结婚
//.......
private:
int age;
char* name;
char* gender;
//......
};
在上面我们可以分别看见在C语言与C++环境下的People结构体的定义。但是C++中,我们一般用class来代替struct,我们通常称class为一个类。虽然C++同样可以使用struct结构体,但两者有些差别,我会在后面给大家补充。
二、类的定义
class是我们定义类所使用的关键字,使用方法跟定义结构体类似,我们可以在类的主体部分定义成员变量与成员函数。
类通常有两种定义方式,第一种就是声明与定义全部放在类体中,但需要注意的是,如果函数是在类里面定义的,编译器可能默认会将函数处理成内联函数。
第二种方法就是类声明放在.h头文件中,定义放在.cpp源文件上,一般来说,除非迫不得已,我们更推荐使用第二种定义方式。但需要注意的是,由于类域的限制,我们在.cpp文件中写定义的时候,要在函数名前加上类名::
这一点就跟C语言模拟实现栈,队列等数据结构一样。