行业知识
【C++要哮着学】类和对象
2026-11-02 07:09:31
来源:互联网转载
文章目录
- 前言
- 面向过程和面相对象初步认识
- 类的定义
- 类的访问限定符及封装
- 访问限定符
- 封装
- 类的作用域
- 类的实例化
- 类对象模型
- 如何计算类的大小
- 结构体内存对齐规则
- 类对象的存储方式
- 1.对象中包含类的各个成员
- 2.代码只保存一份,在对象中保存存放代码的地址
- 3.只保存成员变量,成员函数存放在公共的代码段
- this指针
- this指针的引出
- this指针的特性
- 注意事项
- 结尾
前言
面向过程和面相对象初步认识
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完
成。
这里面总共有四个对象:人、衣服、洗衣粉、洗衣机。
整个洗衣过程:人将衣服放进洗衣机、倒入洗衣粉、启动洗衣机,洗衣机就会完成洗衣过程并甩干。
整个过程主要是:人,衣服,洗衣机,洗衣粉四个对象之间交互完成的,人不需要关心洗衣机具体是如何洗衣服的,是如何甩干的。
类的定义
class classname{//类型:由成员变量和成员函数组成};// 和结构体struct一样最后记得加分号其中,class为定义的关键字,classname为类的名字,{}中为类的主体,注意:类定义结束时,后面的分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量,类中的函数称为类的方法或者成员函数。
类的两种定义方式:
- 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
这里将声明和定义都放进类中。
class Person{public://显示基本信息void showInfo(){cout public://显示基本信息void showInfo();private://需要留意的是 成员变量这里是声明 并没有开辟空间 不是定义char* _name;//名字char* _sex;//性别int _age;//年龄};cout public:void TimeInfo();private:int _year;int _month;int _day;};// 在类外面 需要指明 TimeInfo是属于类Time这块区域的void Time::TimeInfo(){cout public:void time(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout Date Time;Time.time(2024, 5, 19);Time.Print();return 0;}private:int _a;char _i;};//一个class B{private:char _i;};//空 class C{//空的 什么都木有};int main(){cout public:void Init(int year, int month, int day){_year = year;_month = month;_day = day;}void Print(){cout Date d1;Date d2;d1.Init(2024, 5, 19);d2.Init(2024, 5, 20);d1.Print();d2.Print();} - 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。