当前位置: 首页 > 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指针作为函数的参数,以实现对象交互

相关文章:

  • 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 语言中的内置运算符
  • 电脑网页制作软件下载/seopeix
  • 顺的做网站便宜吗/网站首页制作网站
  • wordpress稳定版/厦门百度整站优化服务
  • 图片发到哪些网站 seo/seo对网店推广的作用
  • 基于vue.js旅游网站开发/廊坊百度关键词优化怎么做
  • 宁乡建设局网站/站长工具seo推广秒收录