当前位置: 首页 > news >正文

十一.C++ 类 -- 面向对象思想

类的定义

class/struct 类名 : 继承方式,基类...{
    类名(行参表):成员变量(初值)...{
        函数体;
    }


    ~类名(void){
        函数体;
    }
    
    返回类型 函数名 (形参表) 常属性 异常说明{
        函数体;
    }
    
    数据类型 变量名;
    
}

访问控制限定符

  • public 共有成员 谁都可以访问

  • private 私有成员 只有自己可以访问

  • protected 保护成员,只有自己和子类可以访问

成员变量

成员变量在对象中存着

成员函数

成员函数在代码端储存

 

class Human
{
public:Human();~Human();void setInfo(int age,const char* name){m_age = age;strcpy_s(m_name, name);};void getInfo(){cout << "age = " << m_age << " name = " << m_name << endl;};private:int age;char name[256];
};Human::Human()
{
}Human::~Human()
{
}int main()
{Human h;h.setInfo(20, "wyd");h.getInfo();   // age = 20 name = wyd
}

This指针

C++成员函数模型

  • 类的每个成员函数(除静态成员函数外),都有一个隐藏的指针型参数,形参名为this,指向调用该成员函数的对象,这就是this指针

  • 在类的成员函数中(除静态成员函数外),对所有成员的访问,都是通过this指针进行的

void setInfo(/* 隐藏一个 Human* this指针 */int age,const char* name){m_age = age;strcpy_s(m_name, name);};void getInfo(/* Human* this */){cout << "age = " << m_age << " name = " << m_name << endl;};

 可以用另外一种写法证明:

void setInfo(/* 隐藏一个 Human* this指针 */int age,const char* name){this->age = age;strcpy_s(this->name, name);};void getInfo(/* Human* this */){cout << "age = " << this->age << " name = " << this->name << endl;};
this指针的应用(必须自己使用this的情况)
  • 多数情况下,程序并不需要显式的使用指针this

  • 有时为了方便,将类的成员变量与该成员函数的参数相同标识符,这时在成员函数内部,可以通过this指针将两者加以区分

void setInfo(int age,const char* name){this->age = age;strcpy_s(this->name, name);};void getInfo(){cout << "age = " << this->age << " name = " << this->name << endl;};private:int age;char name[256];
};
  • 返回基于this指针的自引用,以支持串连调用

Human& increment()
{++age;return *this;
}h.increment();h.getInfo();   // age = 21 name = wyd
  • 将this指针作为函数的参数,以实现对象交互

http://www.dtcms.com/a/239091.html

相关文章:

  • day50 随机函数与广播机制
  • 【西门子杯工业嵌入式-6-ADC采样基础】
  • CMake基础:gcc/g++编译选项详解
  • 结合三维基因建模与智能体技术打造工业软件无码平台
  • 2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)
  • 什么是 Ansible 主机和组变量
  • 【数据结构】顺序表和链表详解(下)
  • C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
  • FBRT-YOLO:面向实时航拍图像检测的轻量高效目标检测框架
  • 股指期货技术分析与短线操作方法介绍
  • 从C到C++语法过度1
  • windows安装Nexus3.6
  • golang循环变量捕获问题​​
  • 网络之交换机
  • InnoDB
  • ubuntu 系统分区注意事项
  • shell批量添加新用户
  • SSE (Server-Sent Events) 技术简介
  • 校园网背后的技术:如何实现全校覆盖与无缝漫游?
  • Go 语言中的内置运算符
  • vue中Echarts的使用
  • VSCode主题设计大赛
  • LeetCode 1723: 完成所有工作的最短时间
  • OpenEuler 系统中 WordPress 部署深度指南
  • Fork/Join框架:CountedCompleter与RecursiveTask深度对比
  • C语言 — 通讯录模拟实现
  • 135. 分发糖果
  • 2.1.1 通信基础的基本概念
  • F(x,y)= 0 隐函数 微分法
  • sizeof 与strlen的区别