/*
* B站学习--[99 - ]
* day11 学习成果
*/
/*
* 4 类和对象
*
* C++面向对象的三大特征为:封装、继承、多态
*
*
* 4.1 封装
*
* 意义:1.将属性和行为作为一个整体,表现生活中的事物;
* 2.将属性和行为加以权限控制;
*
* 语法:class 类名{ 访问权限; 属性 / 行为 };
*
*
* 封装意义二:
* 类在设计时,可以吧属性和行为放在不同的权限下,加以控制。
*
* 访问权限有三种:
* 2.protected 保护权限 类内可以访问 类外不可以访问 子类可以访问父类的保护内容
* 3.private 私有权限 雷内可以访问 类外不可以访问 子类不可以访问父类的私有内容
*
*
* 4.1.2 struct和class的区别
*
* 唯一区别:默认的访问权限不同
*
* struct 默认权限是共有public class 默认权限为私有private,类外不可访问
*
*
* 4.1.3 成员属性设置为私有
*
* 优点1:将所有成员属性设置为私有,可以自己控制读写权限;
* 优点2:对于写权限,我们可以检测数据的有效性。
*
* 设置set...(){} 和 get...(){}
*
*
* 4.1.4 点与圆的关系
*
*
*
*
*/
#include <iostream>
#include <string>
using namespace std;
const double PI = 3.14;
//设计一个圆类,求圆的周长
class Circle1 {
public :
double radius = 1;
double calculate() {
return 2 * PI * radius;
}
};
class Student {
private: //公共权限
string name;
int number;
public:
void setName(string name) {
this->name = name;
}
void setNumber(int number) {
this->number = number;
}
void printInformation() {
cout << "姓名:" << this->name << endl;
cout << "学号:" << this->number << endl;
}
};
//访问权限
class person {
public: //公共权限
string m_Name; //姓名
protected: //保护权限
string m_Car; //汽车
private: //私有权限
int m_Password; //银行卡密码
public:
void func() {
m_Name = "张三";
m_Car = "拖拉机";
m_Password = 123456;
}
};
class Cube {
private:
double length = 0;
double width = 0;
double height = 0;
public:
void setLength(int length) {
this->length = length;
}
void setWidth(int width) {
this->width = width;
}
void setHeight(int height) {
this->height = height;
}
double getLength() {
return this->length;
}
double getWidth() {
return this->width;
}
double getHeight() {
return this->height;
}
double getArea() {
return 2 * (length * width + length * height + width * height);
}
double getVolume() {
return length * width * height;
}
bool equals(Cube& c2) {
if(height == c2.getHeight()
&& length== c2.getLength()
&& width== c2.getWidth()) {
return true;
}
else {
return false;
}
}
};
bool isEquals(Cube& c1,Cube &c2) {
if (c1.getHeight() == c2.getHeight()
&& c1.getLength() == c2.getLength()
&& c1.getWidth() == c2.getWidth() ) {
return true;
}
else{
return false;
}
}
//点与圆的位置关系
//点类
class Point {
private:
int X;
int Y;
public:
void setX(int X) {
this->X = X;
}
int getX() {
return this->X;
}
void setY(int Y) {
this->Y = Y;
}
int getY() {
return this->Y;
}
int getDistance() {
return 0;
}
};
//圆类
class Circle {
private:
int radius;
Point center;
public:
void setCenter(Point p) {
this->center = p;
}
void setRadius(int radius) {
this->radius = radius;
}
Point getCenter() {
return center;
}
int getRadius() {
return radius;
}
};
void isInCircle(Circle &c,Point &p){
//计算两点之间距离 平方
int distance =
(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
//计算半径的平方
int rDistance = c.getRadius() * c.getRadius();
//判断关系
if(distance == rDistance){
cout << "点在圆上" << endl;
}
else if(distance > rDistance){
cout << "点在圆外" << endl;
}
else {
cout << "点在圆内" << endl;
}
}
int main12() {
//创建对象
//实例化 [通过一个类 创建一个对象的过程]
//Circle c1;
//c1.radius = 10;
//cout << "圆的周长为; " << c1.calculate() << endl;
//Student s1;
//s1.setName("Lisi");
//s1.setNumber(211);
//s1.printInformation();
//Cube c1;
//c1.setLength(10);
//c1.setWidth(10);
//c1.setHeight(10);
//cout << "c1的表面积为:" << c1.getArea() << endl;
//cout << "c1的体积为:" << c1.getVolume() << endl;
//Cube c2;
//c2.setLength(10);
//c2.setWidth(10);
//c2.setHeight(10);
//cout << "c1与c2是否相等:" << isEquals(c1, c2) << endl;
//cout << "c1与c2是否相等:" << c1.equals(c2) << endl;
//创建圆
Circle c;
c.setRadius(10);
Point center;
center.setX(10);
center.setY(0);
c.setCenter(center);
//创建点
Point p;
p.setX(10);
p.setY(9);
//判断关系
isInCircle(c,p);
system("pause");
return 0;
}
C++基础 类和对象
本文介绍了C++中的面向对象编程特性,包括封装、继承和多态的概念。通过实例讲解了如何实现类的封装,使用private和public控制成员变量的访问权限,并展示了如何设计具有封装特性的点、圆类。此外,还讨论了结构体struct与类class的区别,以及如何判断点与圆的位置关系。
摘要由CSDN通过智能技术生成