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

C++类和对象-1

类的语法

   class className
{成员函数;成员变量组成;};  
class ClassName 
{
public:// 公有成员(外部可访问)
private:// 私有成员(仅类内可访问)
protected:// 受保护成员(子类可访问)
};

class默认成员为privatestruct默认为public 

  class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
  类体中内容称为类的成员:类中的变量称为类的属性或成员变量;   类中的函数称为类的方法或者成员函数。
  

  【访问限定符说明】
     1. public修饰的成员在类外可以直接被访问
     2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
     3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
     4. 如果后面没有访问限定符,作用域就到}即类结束。
     5. class的默认访问权限为private,struct为public(因为struct要兼容C)

类的访问权限 

类的成员有三种访问权限:public、private 和 protected,分别表示公有的、私有的和受保护的。
  • 在类的内部(类的成员函数中),无论成员被声明为 public 还是 private,都可以访问。
  • 在类的外部(定义类的代码之外),只能访问 public 成员,不能访问 private、protected 成员。
  • 在一个类体的定义中,private 和 public 可以出现多次。
  • 结构体的成员缺省为 public,类的成员缺省为 private。
  • private 的意义在于隐藏类的数据和实现,把需要向外暴露的成员声明为 public。

 简单使用

#include <iostream>
using namespace std;class Date                                                //class默认访问是private私有的,而struct默认public公有的
{void Print1()                                         //这里默认是private私有的,类外面不能调用此成员函数{cout << "调用成员函数Print1打印信息" << endl;}
public:void Init(int year, int month, int day)              //成员函数,调用私有成员变量_year、_month、_day{_year = year;_month = month;_day = day;}void Print2()                                        //公有成员函数,类外面可进行调用{cout << _year << "/" << _month << "/" << _day << endl;   //调用类成员变量}int fp = 1;void Print3(int x);
private:                                                 //一般成员变量设置为私有的,外部往往通过调用成员函数int _year=0;                                         //声明成员变量_year、_month、_dayint _month=0;int _day=0;
};void Date::Print3(int x)
{cout << "类外面调用Print3()函数"<<x<<"次" << endl;
}class A2
{
public:void f2(){}
};class A3
{};int main()
{Date d1;                         //这里才是定义,即对象实例化d1.Init(2024, 8, 25);//d1.Print1();                   //无法调用私有的类成员函数Print1()d1.Print2();d1.Print3(1);//Date::fp++;                    //不能访问,因为类里面的int fp仅仅是声明,不是定义,不能直接访问d1.fp++;                         //只能访问公有的成员变量cout << "sizeof(d1) = " << sizeof(d1) << endl<<endl;      //讲究内存对齐,sizeof(d1) = 16字节//因为成员函数没有存在类的对象里面,而是找一块公共区域来存放成员函数,所以是16字节//例如Date d2;                         Date d3;d2.fp++;                         //这两个fp不一样,不是同一块空间的成员变量  d3.fp++;d2.Print3(1);d3.Print3(1);                    //但是这两个成员函数是同一块空间,成员函数的地址是一样的//两个类都没有成员变量,类大小默认为1字节,作为占位作用,在标识对象实例化时,定义出来存在过cout << "sizeof(A2) = " << sizeof(A2) << endl;                   //sizeof(A2) = 1cout << "sizeof(A3) = " << sizeof(A3) << endl;                   //sizeof(A3) = 1//此时标识对象需要开空间,所以没有成员变量的类大小不能是0,而是1A2 aa1;A3 bb2;  
}

 代码演示结果:

http://www.xdnf.cn/news/8628.html

相关文章:

  • Qwen2.5 VL 语言生成阶段(4)
  • 【MPC控制 - 从ACC到自动驾驶】1 ACC系统原理与MPC初步认知
  • 力扣刷题Day 53:和为 K 的子数组(560)
  • WHAT - 兆比特每秒 vs 兆字节每秒
  • 处理三高业务
  • 趋势触发策略
  • 第四十九节:图像分割-基于深度学习的图像分割
  • 国际前沿知识系列四:格兰杰因果分析在脑区应变原因分析中的应用
  • 深入理解API:从概念到实战
  • leetcode 两数相加 java
  • 51页 @《人工智能生命体 新启点》中國龍 原创连载
  • redis的AOF恢复数据
  • CMake基础:CMakeLists.txt 文件结构和语法
  • github公开项目爬取
  • SMT贴片机操作核心步骤精要
  • 在kali中搞个jdk1.8.,又不破坏环境
  • Python猜拳“小”游戏
  • 动态IP:像变色龙一样自由切换网络身份
  • 【编程语言】【C语言】一篇文件构建C语言知识体系
  • 神经算子与FNO技术详解
  • 几种环境下的Postgres数据库安装
  • docker commit除了提交容器成镜像,还能搞什么之修改cmd命令
  • 全面指南:使用Node.js和Python连接与操作MongoDB
  • 汉字不仅是一种语言 还是当作艺术形式来展现
  • 基于Springboot + vue3实现的中国戏曲文化传播系统
  • Linux环境变量与地址空间
  • 冰箱热交换的原理以及如何加氟
  • 超越OpenAI CodeX的软件工程智能体:Jules
  • Axure元件动作六:设置图片
  • 高分辨率北半球多年冻土数据集(2000-2016)