C++ >> 类和对象

本文探讨了C++编程中的核心概念——类和对象,涉及封装、多态和继承三大特性。通过访问权限的例子,解释了成员属性私有化的实现,并比较了结构体与类的区别。文章预告下篇将展示类与对象的实际应用及文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间:2019年8月21日18:33:13
编译器:vs2017

C++的三大永恒话题:封装、多态、继承
今天开始,开始学习C++的核心,共勉。

初次见面

#include <iostream>
#include <string>

using namespace std;

// C++面向对象的三大特性为:封装、继承、多态
// C++认为万事万物皆对象, 对象上有其属性和行为
// 具有相同性质的对象, 我们可以抽象为类, 人属人类, 车属车类


// 封装意义:
// 将属性和行为作为一个整体, 表现生活中的事物
// 将属性和行为加以权限控制
// 语法: class 类名{ 访问权限: 属性 / 行为 };


// 求圆的周长的例子
/*
// 设计一个圆类, 求圆的周长
//公式: 2 * PI * 半径
const double PI = 301415926;

// class 代表设计一个类, 类的后面紧跟着的就是类名称
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;

	system("pause");
	return 0;
}*/

// 设计一个学生类, 属性有姓名和学号,
// 可以给姓名和学号赋值, 可以显示学生的姓名和学号

// 设计学生类
class Student
{
public:     // 公共权限

	// 类中的属性和行为  我们统一称为 成员
	// 属性  成员属性  成员变量
	// 行为  成员函数  成员方法

	//属性
	string m_Name;    //姓名
	
	long long int m_Id;       //学号

	//行为
	//显示姓名和学号
	void showStudent()
	{
		cout << " 姓名: " << m_Name << " 学号: " << m_Id << endl;
	}
	// 给姓名赋值
	void setName(string name)
	{
		m_Name = name;
	}

	//给学号进行赋值
	void setId(long long int id)
	{
		m_Id = id;
	}

};

int main()
{
	//创建一个具体学生  实例化对象
	Student s1;
	//给s1对象  进行属性赋值操作
	s1.setName(" 里昂 ");
	s1.setId(15210020102);
	s1.showStudent();

	Student s2;
	s2.m_Name = " 花生 ";
	s2.m_Id = 15210020129;
	s2.showStudent();


	system(" pause ");
	return 0;
}

下面是关于访问权限的例子:

#include <iostream>

using namespace std;

// 类在设计时, 可以把属性和行为放在不同的权限下, 加以控制,访问权限一共有三种
// public		公共权限     类内可以访问   类外可以访问
//protected		保护权限	类内可以访问   类外不可以访问   儿子可以访问父的内容
//private		私有权限	类内可以访问   类外不可以访问	儿子不可以访问父的内容

class Person
{
public:
	//公共权限
	string m_Name;    //姓名

protected:
	//保护权限
	string m_Car;	 //汽车

private:
	//私有权限
	int m_Password;	  //银行卡密码

public:
	// 此为类内
	void func()
	{
		m_Name = "里昂";
		m_Car = "拖拉机";
		m_Password = 123456;
	}


};

//  此为类外
int main()
{
	// 实例化具体对象
	Person p1;
	p1.m_Name = " 花生 ";
	//p1.m_Car = "奔驰";        //保护权限的内容, 类外访问不到
	//p1.Password = 234562;	  //私有权限的内容, 类外访问不到

	p1.func();  //公共, 类外可以访问
	system(" pause ");
	return 0;
}

成员属性设置为私有化

#include <iostream>
#include <string>

using namespace std;

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

class Person
{
public:

	//设置姓名
	void setName(string name)
	{
		m_Name = name;
	}
	// 获取姓名
	string getName()
	{
		return m_Name;
	}


	//设置年龄
	void setAge(int age)
	{
		if (age > 150 || age < 0)
		{
			cout << "输入有误!" << endl;
			return;
		}
			m_Age = age;

		
	}

	//获取年龄    可读可写  如果想要修改(年龄须在0~150 之间)
	int getAge()
	{
		//m_Age = 0;  //初始化
		return m_Age;
	}

	//设置情人
	void setLover(string name)
	{
		m_Lover = name;
	}


private:
	//姓名		可读可写
	string m_Name;

	//年龄		只读
	int m_Age;

	//情人		只写
	string m_Lover;
};


int main()
{
	Person p;
	p.setName(" 里昂 ");
	cout << " 姓名为: " << p.getName() << endl;
	
	p.setAge(1000);
	cout << " 年龄为: " << p.getAge() << endl;

	p.setLover(" 花生 ");

	system("pause");
	return 0;
}

结构体和类的区别

#include <iostream>

using namespace std;
// 在C++中 struct 和 class 唯一的区别就在于默认的访问权限不同
// struct 默认权限为公共
// class  默认权限为私有

class C1
{
	int m_A;
};

struct C2
{
	int m_A;
};

int main()
{
	C1 c1;
	//c1.m_A = 100;   // 报错  私有 类外不可访问

	C2 c2;
	c2.m_A = 100;

	system("pause");
	return 0;
}

下一篇是关于类和对象的实际案例 + 文件分区操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值