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 分钟前
【FreeRTOS】调试技巧篇
开发语言
量子炒饭大师10 分钟前
【C++入门】Cyber高维的蜂巢意识 —— 【类与对象】static 成员
开发语言·c++·静态成员变量·static成员
开开心心就好11 分钟前
实用PDF批量加马赛克,抹除敏感信息绿色版
java·linux·开发语言·网络·人工智能·pdf·word2vec
不想看见40414 分钟前
Word Ladder Ⅱ -- 广度优先搜索--力扣101算法题解笔记
开发语言·c#
Anastasiozzzz15 分钟前
LeetCode 287 寻找重复数字
算法·leetcode·职场和发展
im_AMBER15 分钟前
Leetcode 123 二叉树的层平均值 | 二叉树的右视图 | 二叉树的层序遍历
数据结构·学习·算法·leetcode·二叉树
We་ct15 分钟前
LeetCode 100. 相同的树:两种解法(递归+迭代)详解
前端·算法·leetcode·链表·typescript
xyq202419 分钟前
HTML 速查列表
开发语言
样例过了就是过了23 分钟前
LeetCode热题100 轮转数组
数据结构·算法·leetcode
ShineWinsu23 分钟前
对于stack和queue经典算法题目:155. 最小栈、JZ31 栈的压入、弹出序列和102. 二叉树的层序遍历的解析
数据结构·c++·算法·面试·力扣·笔试·牛客网