小工具知识网

当前位置: 首页 > 行业知识 > 【C++心愿便利店】No.4---C++初谈类和对象

行业知识

【C++心愿便利店】No.4---C++初谈类和对象

2026-11-05 08:50:52 来源:互联网转载

文章目录

  • 前言
  • 一、面向过程和面向对象初步认识
  • 二、类的引用
  • 三、类的定义
  • 四、类的访问限定符及封装
  • 五、类的作用域
  • 六、类的实例化
  • 七、类对象模型
  • 八、this���针

    前言

    个人主页:@小沈YO.

    小编介绍:欢迎来到我的乱七八糟小星球

    专栏:C++ 心愿便利店

    本章内容:类和对象

    记得 评论 +点赞 +收藏 +关注哦~


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、面向过程和面向对象初步认识

    C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

    C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

    二、类的引用

    C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。

    比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数

    结构体中只能定义变量,并且声明栈类型的变量时,必须写全struct Stack。

    typedef int DataType;struct Stack{DataType* _array;size_t _capacity;size_t _size;};struct Stack s;//声明一个结构体变量

    C++中,struct结构体升级成了类,它里面不仅可定义变量,还可以定义函数,并且声明栈类型变量的时候,可以不加struct。声明的变量可以通过.去调用类里面的函数。

    #includeusing namespace std;//C++兼容C语言,结构用法可以继续使用//同时struct也升级成了类struct Stack{//成员函数void Init(){a = nullptr;top = capacity = 0;}void Push(int x){//...}//成员变量int* a;int top;int capacity;};int main(){Stack st2;//C语言是不允许这样定义结构体但是C++可以st2.Init();//调用类里面的函数st2.Push(1);st2.Push(2);st2.Push(3);st2.Push(4);return 0;}

    三、类的定义

    class className{// 类体:由成员函数和成员变量组成};  // 一定要注意后面的分号

    class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。

    类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

    //定义一个人的类class Person{public://成员函数——显示基本信息void showInfo(){cout public://成员函数——显式基本信息void showInfo();public://成员变量char* _name;//姓名char* _sex;//性别int _age;//年龄};cout public: void PrintPersonInfo();private: char _name[20]; char _gender[3]; int  _age;};// 这里需要指定PrintPersonInfo是属于Person这个类域void Person::PrintPersonInfo(){ cout  Person._age = 100;   // 编译失败:error C2059: 语法错误:“.” return 0;}public://成员函数——打印基本信息void Print(){cout Person r;//用类实例化一个对象rr._name = "张三";r._sex = "男";r._age = 30;r.Print ();return 0;}public:void f1() {}private:int _a;};// 类中仅有成员函数class A2 {public:void f2() {}};// 类中什么都没有---空类class A3{};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(2023, 8, 20);d1.Print();d2.Init(2023, 8, 21);d2.Print();return 0;}public:void Print(){cout A* p = nullptr;p-Print();return 0;}public:void PrintA(){cout A* p = nullptr;p-PrintA();return 0;}

上一篇:解锁iPhone锁屏密码,轻松应对遗忘危机!

下一篇:帝国CMS删除畅言全攻略,详细步骤与操作指南