由于本人之前有C基础,C++的程度是基本语法+STL+ C with class的程度,对类与对象和高级特性没有学习, 因此学习中只记录自己不知道的,其他已知的掠过。
教程来自:https://www.w3cschool.cn/cpp/
C++ 类 & 对象
- 类是 C++ 的核心特性,通常被称为用户定义的类型。(变量+函数,与struct区分)
- 类的对象的公共数据成员可以使用直接成员访问运算符 (.) 来访问。私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。
- 类成员函数是类的一个成员,它可以操作类的任意对象,可以访问
- 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义(这里就解释了前面的std::cin)比如:
class Box
{
public:
double length; // 长度
double breadth; // 宽度
double height; // 高度
double getVolume(void)
{
return length * breadth * height;
}
};
也可以在类的外部使用范围解析运算符 :: 定义该函数,如下所示:
double Box::getVolume(void)
{
return length * breadth * height;
}
对于比较复杂的类,可以在定义类成员时写函数声明,再用::在下面单独写函数内容:
class Line
{
public:
double length;
void setLength( double len );
double getLength( void );
};
// 成员函数定义
double Line::getLength(void)
{
return length ;
}
void Line::setLength( double len )
{
length = len;
}
- 数据隐藏是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。(访问说明符)
- 默认情况下,类的所有成员都是私有的。(就是前面不写public)。实际操作中,我们一般会在私有区域定义数据,在公有区域定义相关的函数。
- protected成员在外部不可访问,但在派生类(即子类)中是可访问的:
class Box
{
protected:
double width;
};
class SmallBox:Box // SmallBox 是派生类,注意派生类的写法
{
public:
void setSmallWidth( double wid );
double getSmallWidth( void );
};
// 子类的成员函数
double SmallBox::getSmallWidth(void)
{
return width ;
}
类的构造函数
- 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
class Line
{
public:
void setLength( double len );
double getLength( void );
Line(); // 这是构造函数
private:
double length;
};
// 成员函数定义,包括构造函数
Line::Line(void)
{
cout << "Object is being created" << endl;
}