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("李二");//只写

}

相关推荐
wshzd2 分钟前
LLM之Agent(104)|DeepSeek-Harness(十三)ReactLoopAgent 总览:kick → turn → step
开发语言·前端·javascript
共享家95277 分钟前
C语言-408
c语言·开发语言
周杰偷奶茶14 分钟前
【Java】运算符指南
java·开发语言
P.D.Wei20 分钟前
[Leetcode 1614] 括号的最大嵌套深度
算法·leetcode·职场和发展
单片机设计·······21 分钟前
【dz-1162】汽车前玻璃雨刮器设计
c++·单片机·嵌入式硬件
2601_9669496524 分钟前
量化回测中分钟数据应该如何保存?从文件到数据仓库的工程化设计
开发语言·python·pandas·量化交易·股票数据·quantdash
Zhou14113638 分钟前
SpringMVC_02_注解开发实战
开发语言·windows·python
AI智讯中枢40 分钟前
高性能 C++ 实战 (五):perf+FlameGraph 火焰图生产实战,精准定位 CPU / 缓存 / 锁瓶颈,避坑 + 完整实操案例
linux·c++·性能调优·性能分析·perf·flamegraph·火焰图
红姐跨境书1 小时前
AI 的底层逻辑:从数据、算法到智能的本质
人工智能·算法
繁华的地方不一定留下你的脚印1 小时前
C++ 算法与 ranges:用 find_if、transform 写清数据处理意图
开发语言·c++·算法