目录
1、认识面向对象
- C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题
- C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
做个比方:
洗衣服这个事件。
- 总共有四个对象:人、衣服、洗衣粉、洗衣机
- 整个洗衣服的过程:人将衣服放进洗衣机、倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣过程并且甩干
- 整个过程主要是:人、衣服、洗衣粉、洗衣机四个对象之间交互完成的,人不需要关新洗衣机具体是如何洗衣服的,是如何甩干的
2、类的引入
C语言结构体中只能定义变量。
在C++中,结构体内不仅可以定义变量,也可以定义函数。
比如:之前在数据结构中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。
3、类的定义
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分
号不能省略。
类的成员:
类中的内容
- 属性/成员变量:类中的变量
- 方法/成员函数:类中的函数
类的定义方式
1、声明和定义全部放在类体中。
需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数(类里面短小函数,适合做内联的函数,直接是在类里面定义的)。
class Person{ //方法 public: void func(){ cout << _name << endl; } //属性 private: char _name; };
2、声明和定义分离开。类声明放在.h文件中,成员函数定义放在.cpp文件中,
注意:成员函数名前需要使用“::”,来指明是哪个类中的函数。
//.h文件 class Person{ public: void func(); private: char _name; };
//.cpp文件 void Person::func(){ cout << _name << endl; }
一般情况下,更建议采用第二种方式。
4、类的访问限定符
1)访问限定符
C++实现封装的方式:
用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。
访问限定符:
- public
- protected
- private
【访问限定符说明】
- public修饰的成员在类外可以直接被访问
- protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
- 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
- 如果后面没有访问限定符,作用域就到 } 即类结束。
- class的默认访问权限为private,struct为public(因为struct要兼容C)
- 大多情况下,成员变量是私有的,防止别人修改数据成员函数。
- 如果在类内调用,则私有权限;如果给外部调用,则公有权限。
【面试题】
问题:C++中struct和class的区别是什么
解答:C++需要兼容C语言,所以C++中struct可以当成结构体使用。另外C++中struct还可以用来定义类。和class定义类是一样的,区别是struct定义的类默认访问权限是public,class定义的类默认访问权限是private。
注意:在继承和模板参数列表位置,struct和class也有区别