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

}

相关推荐
艾莉丝努力练剑2 分钟前
【Linux:文件】基础IO
linux·运维·c语言·c++·人工智能·io·文件
lili-felicity2 分钟前
CANN多模型并发部署与资源隔离
开发语言·人工智能
小龙报7 分钟前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
子春一7 分钟前
Flutter for OpenHarmony:构建一个 Flutter 数字消消乐游戏,深入解析网格状态管理、合并算法与重力系统
算法·flutter·游戏
承渊政道9 分钟前
C++学习之旅【C++中模板进阶内容介绍】
c语言·c++·笔记·学习·visual studio
qq_5324535315 分钟前
使用 Three.js 构建沉浸式全景图AR
开发语言·javascript·ar
浅念-17 分钟前
C语言——动态内存管理
c语言·开发语言·c++·笔记·学习
Vect__3 小时前
基于线程池从零实现TCP计算器网络服务
c++·网络协议·tcp/ip
草履虫建模6 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq8 小时前
分布式系统安全通信
开发语言·c++·算法