C++类和对象

目录

封装的意义:

访问的三个权限:public private protect

class与struct的区别:

成员属性私有化


C++面向对象的三大特性:封装、继承、多态

封装的意义:

        1.将属性和行为一个整体,表现事物

        2.将属性和行为加以权限

语法  class 类名{访问权限:属性/行为};

实例1:

#include<iostream>
using namespace std;
const double PI=3.14;
class Circle //圆类
{
public:
    //属性
	int m_R;//半径
	//行为
	double calculateZC()//获取半径
	{
		return 2 * PI * m_R;
	}
};
int  main()
{
	Circle C1;//利用类实例化创建圆对象
	C1.m_R = 10;//属性赋值
	cout <<"周长为" << C1.calculateZC() << endl;//输出:周长为62.8
	return 0;
	system("pause");
}

实例2:

#include<iostream>
#include<string>
using namespace std;
const double PI=3.14;
class Student //学生类
{
public:
	//属性(成员)
	string m_name;//姓名
	int  m_ID;//学号
	//行为(成员函数)
	void  Print()//输出信息
	{
		cout << "姓名:" << m_name << ";学号:" << m_ID << endl;
	}
	void setname(string name)//给姓名赋值
	{
		m_name = name;
	}
};
int  main()
{
	Student stu;//利用类实例化创建学生对象
	stu.m_name = "张三";//属性赋值
	stu.m_ID = 10000;
	stu.Print();//姓名:张三;学号:10000
	stu.setname("李四");
	stu.Print();//姓名:李四; 学号:10000
	return 0;
}

访问的三个权限:public private protect

1.公共public 成员 类内可以访问,类外也可以

2.私有private 成员 类内可以访问,类外不可以 继承中儿子不可以访问

3.保护protected 成员 类内可以访问,类外不可以 继承中儿子可以访问

#include<iostream>
#include<string>
using namespace std;
class Man //学生类
{
public://属性(成员)
	string m_name;//姓名
private:
	string m_password;
protected:
	string  m_ID;//学号

public://行为(成员函数)
	void set()//给姓名赋值
	{
		m_name ="张三";
		m_ID =123;
		m_password =7811515;
	}
};
int  main()
{
	Man p;//利用类实例化创建学生对象
	p.m_name = "李四";
	//p.m_ID=456789;不合法
	return 0;
	system("pause");
}

class与struct的区别:

        struct默认权限共有

        class默认权限私有

class Man //学生类

{

        string m_password;//默认私有

};

成员属性私有化

        优点1:成员属性设置为私有,自己可以控制读写权限

        有点2:对于读写权限,我们可以检测数据的有效性

#include<iostream>
#include<string>
using namespace std;
class Man //人类
{
private:
	string m_name;//姓名(预期设置:可读可写)
	int m_Age;//年龄(只读)
	long long m_Id;//身份证号(只写)
public:
	void setname(string name)//姓名写
	{
		m_name = name;
	}
	string getname()//获取姓名
	{
		return m_name;
	}
	int getage()//只读
	{
		m_Age = 10;
		return m_Age;
	}
	void setID(long long ID)
	{
		m_Id = ID;
	}
	void print()
	{
		cout << m_Id;
	}
};
int  main()
{
	Man m1;
	m1.setname("张三");
	//m1.m_Age = 18;不合法(类外私有不能直接访问)
	m1.setID(123456789445);
	cout << m1.getname() << endl;
	cout << m1.getage() << endl;//输出10
	//m1.print();检测m_ID是否设置成功
	return 0;
	system("pause");
}

实例:

#include<iostream>
#include<string>
using namespace std;
class Point//点类
{
private:
	int m_x;
	int m_y;
public:
	void set(int x, int y){
		m_x = x; m_y = y;
	}
	int getx(){
		return m_x;
	}
	int gety(){
		return m_y;
	}
};
class Circle //圆类
{
private://成员
	int m_R;//半径
	Point m_Center;//圆心
public://成员函数
	void setR(int r) {
		m_R = r;
	}
	int getR()//设置半径
	{
		return m_R;
	}
	void setCenter(Point center) //设置圆心
	{
		m_Center = center;
	}
	Point getCenter()
	{
		return m_Center;
	}
};
//判断点和圆的位置关系
void isIN(Circle& c, Point& p)
{
	//计算距离的平方
	int d=(c.getCenter().getx() - p.getx())*(c.getCenter().getx() - p.getx())+
		(c.getCenter().gety() - p.gety())* (c.getCenter().gety() - p.gety());
	if (c.getR() * c.getR() > d)
		cout << "点在圆内" << endl;
	else if (c.getR() * c.getR() ==d)
		cout << "点在圆上" << endl;
	else if (c.getR() * c.getR()<d)
		cout << "点在圆外" << endl;
}
int  main()
{
	Point center,p1,p2,p3;
	center.set(10,0);p1.set(10, 9); p2.set(10, 10); p3.set(10, 11);
	Circle c1;
	c1.setCenter(center);
	c1.setR(10);
	isIN(c1, p1); //点在圆内
	isIN(c1, p2); //点在圆上
	isIN(c1, p3);//点在圆外
	return 0;
	system("pause");
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值