(一)类的封装
1)封装(Encapsulation)
A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。
B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
C++中类的封装
成员变量,C++中用于表示类属性的变量
成员函数,C++中用于表示类行为的函数
2)类成员的访问控制
在C++中可以给成员变量和成员函数定义访问级别
public修饰成员变量和成员函数可以在类的内部和类的外部被访问
private修饰成员变量和成员函数只能在类的内部被访问
protected:修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问 用在继承里面
实例验证:
class MyAdvCircle
{
doulbe m_test;//没有权限修饰的成员变量 函数 是默认是私有属性
private:
//private:修饰成员变量和函数 只能在类的内部被访问 ,不能在类的外部访问
double m_r; //属性 成员变量
double m_s;
public:
//public :修饰成员变量和函数 可以在类的内部和类的外部访问
double getR()
{
return m_r;
}
void setR(double r)
{
m_r = r;
}
double getS()
{
m_s = 3.14*m_r*m_r;
return m_s;
}
};
void main42()
{
MyAdvCircle c1, c2;
//c1.m_r = 10;//无法访问
c1.setR(10); //只能通过公共部分访问内部变量
system("pause");
}
3)struct和class关键字区别
在用struct定义类时,所有成员的默认属性为public
在用class定义类时,所有成员的默认属性为private
(二)实战开发中类的使用:
在实战开发中习惯将类的声明放在头文件中,类的实现放在cpp文件中,例:
头文件 MyTeacher.h:
# pragma once //只包含一次
//类的声明
class MyTeacher
{
private:
int m_age;
char name[32];
public:
void setAge(int age);
int getAge();
};
cpp文件 MyTeacher.cpp :
#include "MyTeacher.h"
void MyTeacher::setAge(int age)
{
m_age = age;
}
int MyTeacher::getAge()
{
return m_age;
}
主函数调用类:
#include <iostream>
#include "MyTeacher.h"
using namespace std;
void main()
{
MyTeacher t1;
t1.setAge(36);
cout << t1.getAge() << endl;
system("pause");
}
注释:
1, # pragma once //只包含一次
这句话的作用与
#ifndef ……
#define ……
……
#endif
作用相同,防止重复包含
2,注意在类的实现中,函数调用的格式(MyTeacher::getAge())