1.封装的意义
语法: class 类名{ 访问权限: 属性(变量) / 行为(函数) };
1.将属性和行为作为一个整体,表现生活中的事物
2.将属性和行为加以权限控制
类中的属性和行为,我们统一称为 成员
属性 也可称为 成员属性 成员变量
行为 也可称为 成员函数 成员方法
2.类中的访问权限
公共权限 public 成员 类内可以访问 类外可以访问 保护权限 protected 成员 类内可以访问 类外不可以访问 儿子可以访问 私有权限 private 成员 类内可以访问 类外不可以访问 儿子不可以访问
3.struct和class区别
在C++中 struct和class唯一的区别就在于 默认的访问权限不同
- struct 默认权限为公共
- class 默认权限为私有
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 p;
p.m_Name = "李四";
//p.m_Car = "奔驰"; //保护权限类外访问不到
//p.m_Password = 123; //私有权限类外访问不到
system("pause");
return 0;
}
类中的成员函数也可以在类中声明,在类外定义
class Person
{
public:
void func(); //成员函数在类中声明
};
void Person::func() //成员函数在类外定义 Person::func()表示类作用域下的func函数
{
m_Name = "张三";
m_Car = "拖拉机";
m_Password = 123456;
}
4.跨文件定义类
源文件1:Preson.cpp 源文件2:main.cpp 头文件:Person.h
头文件: Person.h
写类中的属性,函数,但函数不写具体实现,在源文件Preson.cpp中写
#pragma once
class Data
{
private:
int mA;
public:
void setA(int a);
int getA(void);
};
源文件1:Preson.cpp
写类中函数的具体实现,注意引入头文件#include "data.h"
#include "Person.h"
void Data::setA(int a)
{
mA=a;
}
int Data::getA()
{
return mA;
}
源文件2:main.cpp
在main函数中就可以直接使用类了,注意引入头文件 #include "Person.h"
#include <iostream>
#include "Person.h"
using namespace std;
int main(int argc, char *argv[])
{
Data ob;
ob.setA(100);
cout<<"mA = "<<ob.getA()<<endl;//mA = 100
return 0;
}