栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++中的类和对象(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++中的类和对象(1)

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

任何事物都可以是对象

封装

   封装的意义---通过属性和行为来表现一个事物

设计一个圆类,求圆的周长(圆的周长  = 2  * π  * r)

#include 
#include 
using namespace std;

double pi = 3.14;

//class代表设计一个类,后面跟着的是类的名字
class circle {
	//访问权限
	//公共权限
public:
	//属性---使用变量
	//半径
	int c_r;

	//行为---使用函数
	//获取圆的周长
	double zc() {
		return 2 * pi * c_r;
	}


};

int main() {

	//通过圆类来创建一个具体的对象
	//通过一个类来创建一个对象(实例化)
	circle c1;
	//给圆的半径赋值
	c1.c_r = 15;

	cout << "圆的周长是" << c1.zc() << endl;
	system("pause");

	return 0;

}

示例2

#include 
#include 
using namespace std;


//创建一个学生类,用来设置学生的姓名和学号,可以展示学生的姓名和学号
class student {

	//权限
public:


	//属性和行为是类的成员
	//属性   成员属性  成员变量
	//行为    成员函数  成员方法


	//属性---变量
	string name;
	int id;
	//行为---函数
	//展示学生信息
	void showinfo() {
		cout << " 姓名: " << name << " 学号: " << id << endl;
	}
	//设置学生信息
	void setname(string name1) {
		name = name1;
	}
	void setid(int id1) {
		id = id1;
	}
};

int main() {

	//通过类创建一个实例
	student s1;
	s1.name = "张三";
	s1.id = 1;
	s1.showinfo();

	student s2;
	s2.setname("李四");
	s2.setid(2);
	s2.showinfo();

	system("pause");

	return 0;

}

一个类里面的属性和行为通称为类的一个成员,属性叫做成员属性或属性变量,行为叫做成员函数或者成员方法

权限控制  三种访问权限 
  1. 公共权限---public(成员类内可以访问,类外可以访问)
  2. 保护权限---protected(成员类内可以访问,类外不可以访问)
  3. 私有权限 ---private(成员类内可以访问,类外不可以访问)

创建一个person类,里面包含三种权限

class person {
	//公共权限
public:
	string  name;
	//保护权限
protected:
	string car;
	//私有权限
private:
	int password;
public:
	void func() {
		name = "张三";
		car = "奥迪";
		password = 123456;
	}
};

 通过类创建一个实例

 由于成员属性car和password是定义在保护权限和私有权限中的,所以在类外访问不到。

 

 总结:公共权限在类内和类外都可以访问,保护权限和私有全休只能在类内访问,类外不行

stuct和class的区别 

struct和class唯一的区别就在于默认的访问权限不同 

  1. struct默认的访问权限为公共(public)
  2. class默认的访问权限为私有(private)

 

成员属性私有化 
  1. 将成员属性设置为私有,可以自己控制读写权限
  2. 对于写权限,我们可以检测数据的有效性 

自己控制读写权限 (刚开始把所有的属性设置为私有的,然后通过公共权限分别设置读写)

#include 
#include 
using namespace std;

//创建一个类
class person {
public:
	//设置名字
	void setName(string name) {
		m_name = name;
	}
	//读取名字
	string getName() {
		return m_name;
	}
	//读取年龄
	int getAge() {
		//初始化年龄m_age为0
		m_age = 0;
		return m_age;
	}
	//写入情人
	void setLover(string lover) {
		m_lover = lover;
	}

private:
	//private私有权限
	string m_name;//名字   ---   设置权限为可读可写
	int m_age;//年龄    ----   设置权限为只读
	string m_lover;//情人  ----    设置权限为只写
};

int main() {

	//通过person创建一个实例
	person p1;
	//通过实例写入名字
	p1.setName("张三");
	//通过实例读取名字
	cout << "名字为:   " << p1.getName() << endl;


	//通过实例读取年龄
	cout << "年龄为:   " << p1.getAge() << endl;

	//通过实例写入情人
	p1.setLover("李四");


	system("pause");

	return 0;

}

检测数据有效

 

示例:设计立方体类(cube ---  立方体)

通过长宽高三个属性来判断两个立方体是否相等(面积和体积两方面)

 

 

#include 
#include 
using namespace std;

//创建一个立方体的类
class cube {
public:
	//设置宽
	void setW(int w) {
		m_W = w;
	}
	//读取宽
	int getW() {
		return m_W;
	}


	//设置高
	void setH(int h) {
		m_H = h;
	}
	//读取高
	int getH() {
		return m_H;
	}


	//设置长
	void setL(int l) {
		m_L = l;
	}
	//读取长
	int getL() {
		return m_L;
	}

	//获取立方体的面积
	int getS() {
		return 2 *((m_W * m_H) + (m_W * m_L) + (m_L * m_H));
	}
	//获取立方体的体积
	int getV() {
		return m_W * m_H * m_L;
	}

	//创建成员函数isSameByClass
	bool isSameByClass(cube &c) {
		if (m_H == c.getH() && m_W == c.getW() && m_L == c.getL())
		{
			return true;
		}
		return false;
	}


	//私有属性
private:
	int m_W;
	int m_H;
	int m_L;
};

//创建一个全局函数用来判断立方体是否相等
bool isSame(cube& a, cube& b) {
	if (a.getH() == b.getH()&& a.getW() == b.getW()&& a.getL() == b.getL()) {
		return true;
	}
	return false;
}

int main() {

	//通过类创建一个实例
	cube c1;
	c1.setL(10);
	c1.setW(10);
	c1.setH(10);
	cout << "立方体c1的面积为:  " << c1.getS() << endl;
	cout << "立方体c1的体积为:  " << c1.getV() << endl;	
	cube c3;
	c3.setL(10);
	c3.setW(10);
	c3.setH(10);
	cout << "立方体c3的面积为:  " << c3.getS() << endl;
	cout << "立方体c3的体积为:  " << c3.getV() << endl;
	cube c2;
	c2.setL(101);
	c2.setW(101);
	c2.setH(101);
	cout << "立方体c2的面积为:  " << c2.getS() << endl;
	cout << "立方体c2的体积为:  " << c2.getV() << endl;


	//调用全局函数来判断两个立方体是否一样
	 bool ret = isSame(c1, c2);
	 if (ret == 1) {
		 cout << "立方体c1和立方体c2一样 "<< endl;
	 }
	 else {
		 cout << "立方体c1和立方体c2不一样 " << endl;
	 }
	 bool ret1 = isSame(c1, c3);
	 if (ret1 == 1) {
		 cout << "立方体c1和立方体c3一样 "<< endl;
	 }
	 else {
		 cout << "立方体c1和立方体c不一样 " << endl;
	 }	
	 bool ret2 = isSame(c2, c3);
	 if (ret2 == 1) {
		 cout << "立方体c2和立方体c3一样 "<< endl;
	 }
	 else {
		 cout << "立方体c2和立方体c3不一样 " << endl;
	 }


	 //利用成员函数来判断立方体
	 bool ret3 = c2.isSameByClass(c3);
	 if (ret3 == 1) {
		 cout << "成员函数 立方体c2和立方体c3一样 " << endl;
	 }
	 else {
		 cout << "成员函数  立方体c2和立方体c3不一样 " << endl;
	 }

	system("pause");


	return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号