13-1类与对象

news/2025/2/13 5:39:31/

(一)封装-属性和行为作为

定义语法:class 类名{访问权限:属性/行为};

类中的属性和行为统称为成员

属性称成员属性、成员变量

行为称为成员函数、成员方法

#include <iostream>

using namespace std;

const double pai=3.14;

class circle//class代表设计一个类,类后面紧跟着的为类的名称

{

public://访问权限——公共权限

    int r;//属性

    double calculateZC()//行为——获取圆的周长

    {

        return 2*pai*r;  

    }

};

int main()

{

    circle c1;//通过圆类创建一个具体的圆 (对象)

    c1.r=10;

    cout<<"圆的周长为:"<<c1.calculateZC()<<endl;

    return 0;

}

案例——设计学生类

#include <iostream>
#include <cstring>
using namespace std;
class student
{
public:
   string name;
   int ID;
   void showstudent()
   {
       cout<<"姓名:"<<name<<endl;
    cout<<"ID:"<<ID<<endl; 
   }
};
int main()
{
    class student s;
    s.name="张一";
    s.ID=10425; 
    s.showstudent();
    return 0;
 } 

#include <iostream>
#include <cstring>
using namespace std;
class student
{
public:
   string name;
   int ID;
   void showstudent()
   {
       cout<<"姓名:"<<name<<endl;
    cout<<"ID:"<<ID<<endl; 
   }
   void setname(string name1)
   {
       name=name1;
   }
   void setID(int ID1)
   {
       ID=ID1;
   }
};
int main()
{
    class student s;
    s.setname("张一");
    s.setID(10425);  
    s.showstudent();
    return 0;
 } 


(二)封装-访问权限

访问权限:1.公共权限 public 成员类内可以访问,类外可以访问

          2.保护权限 protected 成员类内可以访问,类外不可以访问

          3.私有权限 private 成员类内可以访问,类外不可以访问

#include <iostream>
#include <cstring>
using namespace std;
class person
{
public:
    string name;
protected:
    string car;
private:
    int password;
public:
void f()
{
    name="张一";
    car="自行车";
    password=123456;
}
};
int main()
{
    person p;
    p.name="李二";

}

类内可以访问

类外不可以访问


(三)封装-C++中的class与struct

C++的class与struct的区别默认的访问权限不同,class默认的权限是private私有,struct默认的权限是公共public

#include <iostream>
using namespace std;
class c
{
    int a;//默认权限私有 
};
struct s
{
  int b;//默认权限公共    
}; 
int  main()
{
    /*c c1;
    c1.a;*/
    s s1;
    s1.b=100;
    cout<<s1.b;
    return 0;
}


(四)封装-成员属性私有化

优点:1.将所有成员属性设为私有,可以控制自己的读写权限

      2.对于写权限,可以检测数据的有效性

#include <iostream>
using namespace std;
#include <cstring>
class person
{
public:
void setname(string name1)
{
name=name1;    
}
string getname()
{
    return name;
}
int getage()
{
    age=18;
    return age;
}
void setfamily(string family1)
{
    family=family1;
}
private:
string name;//可读可写 
int age;//只读 
string family;//只写 
};
int main()
{
    person p;
    p.setname("张一");
    cout<<"姓名:"<<p.getname()<<endl;
    cout<<"年龄:"<<p.getage()<<endl;
    p.setfamily("李二");//只写 
}


http://www.ppmy.cn/news/1564639.html

相关文章

Tesla Free - Fall attack:特斯拉汽车网络安全攻击事件分析

文章目录 一、Tesla Free - Fall attack&#xff1a;特斯拉汽车网络安全事件纪要1. 引言2. 攻击流程2.1 攻击切入点2.2 系统入侵2.3 CAN 总线操控 3. 影响后果4. 特斯拉应对措施5. 研究意义二、安全攻击事件技术分析以及相应的检测和缓解措施 一、Tesla Free - Fall attack&…

C++实现设计模式---组合模式 (Composite)

组合模式 (Composite) 组合模式 是一种结构型设计模式&#xff0c;它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使客户端对单个对象和组合对象的使用具有一致性。 意图 将对象组合成树形结构&#xff0c;以表示“部分-整体”的层次结构。使得客户端可以以…

3d系统误差分析

系统标定重投影误差预估 在计算机视觉和三维重建领域中&#xff0c;评估一个相机系统标定精度的重要指标。通过比较真实的三维点在图像中的投影位置与标定模型计算出的投影位置之间的差异&#xff0c;来衡量标定的准确性。 以下是对这一概念的详细解析&#xff1a; 什么是系统…

多种 Docker 镜像拉取解决方案与实践

最近国内 Docker 镜像拉取不太通畅&#xff0c;尝试了几种镜像拉取的方式&#xff0c;写篇博客分享一下。 原以为只是 docker hub 被毙了&#xff0c;上机器一操作&#xff0c;官方的下载地址也被毙了&#xff0c;真是从源头解决问题。 不过还好目前还有其他源能用&#xff0…

Kubernetes 部署 RabbitMQ 集群教程

本文介绍如何在 Kubernetes 中部署 RabbitMQ 集群&#xff0c;包含从命名空间创建到配置 NFS 存储的详细步骤。 参考文档&#xff1a; RabbitMQ 集群部署NFS StorageClass 创建 部署步骤 1. 创建命名空间 kubectl create ns rabbitmq2. 创建 RBAC 权限 创建文件 rabbitmq…

【神经网络基础】

目录 一、神经网络的构成 1.1什么是神经网络&#xff1f; 1.2 激活函数 1.2.1 Sigmoid 1.2.2 Tanh 1.2.3 ReLU 1.2.4 softmax 1.2.5 其他激活函数 1.2.6 选择激活函数 1.3 参数初始化 1.4 模型构建 二、损失函数 2.1 分类问题 2.1.1多分类&#xff08;多分类交叉…

如何微调本地大模型构建私有知识库

如何微调本地大模型构建私有知识库 在如今的信息化时代&#xff0c;数据是企业最宝贵的资产之一&#xff0c;而如何高效地管理和利用这些数据&#xff0c;成为了提升竞争力的关键。构建私有知识库是提升企业运营效率的有效手段&#xff0c;而微调本地大模型则成为了实现这一目…

Linux UDP 编程详解

一、引言 在网络编程领域&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;作为一种轻量级的传输层协议&#xff0c;具有独特的优势和适用场景。与 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff0…