您的位置:首页 > 编程语言 > C语言/C++

(C++)类与对象——封装

2020-08-05 16:52 936 查看

封装的基础与意义

1.类的创建与调用

#include "iostream"
using namespace std;
const double PI = 3.14;
class Circle
{
public:
//属性
int radius;
//行为
double calculateZC()
{
return 2 * PI * radius;
}
};
int main()
{
//创建一个具体的圆
//实例化
Circle c1;
c1.radius = 10;
cout << c1.calculateZC() <<endl;
system ("pause");
return 0 ;
}

类的案例:学生类的创建

#include <string>
#include "iostream"
using namespace std;
const double PI = 3.14;
class Student
{
public:
//属性
string name;
int number;
//行为
void printName()
{
cout << name <<endl;
}
void printNumber()
{
cout << number <<endl;
}
//通过函数给姓名赋值
void setName(string Name)
{
name = Name;
}
void setNumber(int Number)
{
number = Number;
}
};
int main()
{

//实例化
Student s1;
s1.setName("xxx");
s1.setNumber(111);
s1.printName();
s1.printNumber();

system ("pause");
return 0 ;
}

封装的意义

封装是C++中面向对象的三大特性之一。

1.属性与行为

将属性和行为作为一个整体,用来表现生活中的事物。

2.权限

设计类时,将属性和行为放在不同的权限下,加以控制。
访问权限有三种:

public(公共权限) 成员类内外都可以访问
protected(保护权限) 成员类内可以访问 类外不可以访问 子类可以访问
private(私有权限) 成员类内可以访问 类外不可以访问
#include <string>
#include "iostream"
using namespace std;
const double PI = 3.14;

class Person
{
public:
//属性
string name;
void set()
{
name = "siri";
carName = "wuhu";
Password = 123;
}
protected:
string carName;
private:
int Password;

};
int main()
{

//实例化
Person p1;
p1.name = "zhangsan";
//不会报错,name是公共成员
p1.carName = "111";
//会报错,因为carName是保护成员
p1.set();
//可以通过函数来给私有和保护成员赋值
system ("pause");
return 0 ;
}

class和struct的区别

struct创建时,结构体内的成员默认属性都是public

class创建时,类内的成员默认属性都是private

成员属性设置为私有

优点:可以自己控制读写的权限,同时在成员函数内,还可以判断数据的有效性

#include <string>
#include "iostream"
using namespace std;
const double PI = 3.14;

class Person
{
public:
void setAge(int age)
{
if (age < 0 || age > 150)
{
Age = 0;
return;
}
//在成员函数中判断数据的有效性
Age = age;
}
//设置私有成员的读写
void setcarName(string carname)
{
carName = carname;
}

string getcarName()
{
return carName;
}

private:
string carName;
int Age;
string name;
};
int main()
{

//实例化
Person p1;
p1.setcarName("111");
cout << p1.getcarName()<<endl;
system ("pause");
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: