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

13-1类与对象

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

定义语法: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.kler.cn/a/509533.html

相关文章:

  • 【17】Word:林楚楠-供应链❗
  • 对话 TDengine 解决方案中心总经理陈肃:构建技术与市场的桥梁
  • 基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)
  • 【论文阅读】基于空间相关性与Stacking集成学习的风电功率预测方法
  • LabVIEW实现油浸式变压器自主监测与实时报告
  • 【AI学习】地平线首席架构师苏箐关于自动驾驶的演讲
  • 【21】Word:德国旅游业务❗
  • 游戏引擎学习第81天
  • 探索 Transformer²:大语言模型自适应的新突破
  • wow-agent---task2使用llama-index创建Agent
  • Ubuntu 空闲硬盘挂载到 文件管理器的 other locations
  • Apache 如何设置 Upgrade-Insecure-Requests 报头 ?
  • 用于零镜头视频对象分割的深度感知测试时训练
  • PyTorch基本功能与实现代码
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索
  • vector迭代器的使用以及迭代器失效
  • 非科班转码第5年零241天
  • STM32 物联网智能家居 (五) 设备子系统之点亮LED灯
  • wireshark 网络分析工具
  • 1.5 GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新
  • Scrapy 爬取 Bangumi 网站的分页与详情页数据
  • unity——Preject3——摄像机动画
  • Java并发05 - AQS共享模式的数据结构
  • windows 搭建flutter环境,开发windows程序
  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成
  • 《重生到现代之从零开始的C++生活》—— 类和对象1