C++类和对象的学习【part1:封装】
属性和行为作为整体
从这里开始,我们将探讨类这个主题,类的三要素是封装-继承-多态。
我们先从封装看起。
参考下列代码:
// arrayone.cpp -- small arrays of integers
#include <iostream>
using namespace std;
const double PI = 3.14;
//要设计一个类
class Circle
{
//访问权限
//公共权限
public:
//属性(通常为变量)
int radius;
//行为(通常为函数)
//获取圆的周长
double calculate()
{
return 2 * PI * radius;
}
};
int main()
{
//通过圆类创建具体对象(实例化)
Circle c1;
//为圆对象属性赋值
c1.radius = 10;
cout << "圆的周长为" << c1.calculate() << endl;
system("pause");
return 0;
}
这里我们创建了一个圆类,并根据其半径计算了其周长,代码很简单,不再赘述。
需要关注的专业术语:
- 类中的属性和行为,统一称为成员
- 属性也称为成员属性 成员变量
- 行为也称为成员函数 成员方法
为什么类中成员喜欢加一个m_或者以_结尾?
为了防止出现如下情况:
name = name;
这里m是member的首字母。
为什么定义类的时候先写行为,后写属性。
或者说为什么定义类的时候,不用先定义变量,有待解决!
访问权限
// arrayone.cpp -- small arrays of integers
#include <iostream>
using namespace std;
const double PI = 3.14;
//访问权限
//公共public 保护protected 私有private
//public 类内外均可访问
//protected 仅类内可以访问(子可访问父亲)
//private 仅类内可以访问(子不可访问父亲)
class Person
{
public:
string name_;
protected:
string car_;
private:
int password_;
public:
void func()
{
name_ = "Libo";
car_ = "benz";
password_ = 123;
}
};
int main()
{
Person p1;
p1.name_ = "Jerry";
// p1.car_ = "new";
// p1.password_ = 1234;
p1.func();
system("pause");
return 0;
}
- 公共权限public: 类内外均可访问
- 保护权限protected: 仅类内可以访问(子可访问父亲)
- 私有权限private: 仅类内可以访问(子不可访问父亲)
struct和class的区别
- struct 默认公共权限 public
- class 默认私有权限 private