目录
前言:
类和对象在c++中是最重要的一部分内容之一,这里会根据三大特性去讲解类和对象的内容,本文具体先介绍其中一个,认真观看哦(ง •_•)ง
前面传送门:
c++面向对象有三个特性:分别是封装、继承、多态
❀定义:
万事万物都可称为对象
对象有属性有行为,具有相同性质的对象,抽象后为一个类,比如人类
类里包含对象属性、对象行为,
有三大权限👉私有权限,公共权限,保护权限
❀封装:三大特征之一
封装的意义:
将属性和行为作为一个整体,表现生活中的事物(万事万物👉对象),并加以权限控制
思路示例:
问题:
写一个圆类,求周长?
解决方案:
公式:2*派*半径
关键字——class
后面紧接着是变量名
访问权限:公共权限
属性:半径
行为:获取圆的周长
通过这个类创造一个具体的圆👉对象
通过点给圆对象属性进行赋值
一点专业术语:
⭐类中的属性和成员统一成为成员
⭐属性又称为:成员属性、成员变量
⭐行为又称为:成员函数
权限:
public公共权限👉成员类内可以访问,类外也可以用,
protected保护权限👉成员类内可以访问,
private私有权限👉成员类内可以访问
保护权限和私有权限的区别:
举例:
保护权限,就是父亲的权限,儿子也可以访问,
私有权限,父亲的私人权限不可以被访问,私有的,这些在继承时会具体讲解
这些权限可以在一个类中多次使用,一个类并没有规定必须只能有一个公共权限等权限
如果保护权限和私有权限在类外发生访问,结果会出错
struct和class区别:
基本相同,但是默认的访问权限不同
struct默认权限公共
class默认权限为私有(默认是类里不写权限默认情况下是私有的)
将成员属性设置为私有
优点:可以自己控制读写功能、对于自己写的权限可以检测数据有效性
用private?
但是如果想让私有权限里的变量可以控制是“可读可写”/“只写”/“只读(设置传入值不行只能获取)”
只用这个私有权限是无法实现这个效果的,因此需要配合公共权限来实现
示例:
#include<iostream>
#include<string>
using namespace std;
int main()
{
class student {
public:
void setname(string Name){
name = Name;
}
string getname(){
return name;
}
int getold() {
return old;
}
void setidol(string Idol){
idol = Idol;
}
private:
string name;//设置为可写可读
int old=18;//设置为可读
string idol;//设置为可写不可读
};
student s;
s.setname("何灰灰"); //设置姓名
cout << "姓名: " << s.getname() << endl;//输出
cout << "年龄: " << s.getold() << endl;
s.setidol("何白白");//设置可写,但是不可读出。
system("pause");
return 0;
}
封装案例:
设计立方体并求出体积和面积
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
int main()
{
class cube {
public:
//行为
//设置获取长宽高
void setl(int l) {
m_l = l;
}
int getl() {
return m_l;
}
void seth(int h) {
m_h = h;
}
int geth() {
return m_h;
}
void setw(int w) {
m_w = w;
}
int getw() {
return m_w;
}
//获取面积
int gets() {
int calculates = 2 * m_l * m_w + 2 * m_l * m_h + 2 * m_w * m_h;
return calculates;
}
//获取立方体体积
int getv() {
int calculatev = m_l * m_w *m_h ;
return calculatev;
}
private:
//属性
int m_h;
int m_w;
int m_l;
};
cube c1;
cube c2;
c1.setl(10);
c1.setw(10);
c1.seth(10);
cout << "c1面积为" << c1.gets() << endl;
cout << "c1体积为" << c1.getv() << endl;
system("pause");
return 0;
}
结语:
感谢观看点赞收藏,下个文章会讲解有关对象的初始化和清理等c++入门知识,欢迎大佬们留言或私信交流o(* ̄▽ ̄*)ブ