Linux C++ 013-封装
Linux C++ 013-封装
本节关键字:Linux、C++、封装
相关库函数:
封装的意义
C++面向对象得三大特性:封装、继承、多态
语法
class 类名
{
访问权限:
属性/行为;
};
// 例如:
class PhoneInfo
{
public:
PhoneInfo();
~PhoneInfo();
private:
int m_No;
protected:
char m_Name[64];
};
封装的意义
(1)将属性和行为作为一个整体,表现生活中的事物;
(2)属性和行为可以加以不同的权限,加以控制。
public // (公共权限)类内可以访问,类外可以访问
protected // (保护权限)类内可以访问,类外不能访问 - 儿子可以访问父亲的保护内容
private // (私有权限)类内可以访问,类外不能访问 - 儿子不能访问父亲的私有内容
struct和class的区别
struct 和 class 的区别,在C++中 struct 与 class 唯一的区别就在于默认的访问权限不同
struct 默认权限为公共 public
class 默认权限为私有 private
成员属性设置为私有
成员属性设置为私有的优点:
(1)将所有成员属性设置为私有,可以自己控制读写权限
(2)对于写权限,可以检测数据的有效性
设计案例
(1)设计一个圆类,求圆的周长
(2)设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号
(3)设计立方体类,求出立方体的表面积和体积,分别用全局函数和成员函数判断两个立方体是否相等
工程模块化
// circle.h
#pragma once
#include <iostream>
using namespace std;
class Point
{
public:
void setX(int x);
int getX();
void setY(int y);
int getY();
private:
int m_X;
int m_Y;
};
class Circles
{
public:
void setR(int r);
int getR();
void setCenter(int x, int y);
Point getCenter();
void isInCircle(Circles& circle, Point& point);
private:
int m_R;
Point m_Center;
};
// circle.c
#include "circle.h"
void Point::setX(int x)
{
m_X = x;
}
int Point::getX()
{
return m_X;
}
void Point::setY(int y)
{
m_Y = y;
}
int Point::getY()
{
return m_Y;
}
void Circles::setR(int r)
{
m_R = r;
}
int Circles::getR()
{
return m_R;
}
void Circles::setCenter(int x, int y)
{
m_Center.setX(x);
m_Center.setY(y);
}
Point Circles::getCenter()
{
return m_Center;
}
void Circles::isInCircle(Circles& circle, Point& point)
{
int distance; // 点和圆心距离的平方
distance = (circle.getCenter().getX() - point.getX()) * (circle.getCenter().getX() - point.getX())
+ (circle.getCenter().getY() - point.getY()) * (circle.getCenter().getY() - point.getY());
cout << "distance = " << distance << endl;
cout << "m_R*m_R = " << m_R * m_R << endl;
if (distance == (m_R ^ 2))
cout << "点在圆上" << endl;
else if (distance < (m_R ^ 2))
cout << "点在圆内" << endl;
else
cout << "点在圆外" << endl;
}
原文地址:https://blog.csdn.net/qq_45157350/article/details/135867486
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!