理解C ++中的类声明

时间:2017-02-05 07:56:18

标签: c++ arduino

尝试了解Arduino IDE的SDFat库的功能。我偶然发现了SDfat.h头文件中的这些代码行。

/**
 1* \class SdBaseFile
 2* \brief Class for backward compatibility.
 3*/
 4 class SdBaseFile : public FatFile {
 5 public:
 6 SdBaseFile() {}
 7 /**  Create a file object and open it in the current working directory.
 8  *
 9  * \param[in] path A path for a file to be opened.
 10  *
 11 * \param[in] oflag Values for \a oflag are constructed by a
 12  * bitwise-inclusive OR of open flags. see
 13  * FatFile::open(FatFile*, const char*, uint8_t).
 14  */
 15 SdBaseFile(const char* path, uint8_t oflag) : FatFile(path, oflag) {}
 16 };

如果有人可以请解释我这个班级宣言是如何运作的。

1)第4行中:public Fatfile的作用是什么。

2)为什么第6行和第15行有两个构造函数(如果有的话)。

我的理解受限于这里缺乏对定义/声明的语法理解。感谢帮助。

由于

3 个答案:

答案 0 :(得分:2)

  1. :public Fatfile表示课程SdBaseFile继承自班级FatFile
  2. 一个类可能有多个构造函数(据我所知,这不仅是C ++,而且是大多数面向对象的语言)。当您使用类SdBaseFile时,您可以选择任何这些构造函数。

答案 1 :(得分:2)

  1. :public Fatfile表示SdBaseFile公开继承自Fatfile。 这实际上称为is-a关系,即SdBaseFile是 - Fatfile。您可以使用Fatfile *指向SdBaseFile

  2. 的对象
  3. 有两种类型的构造函数,一种不带任何参数,另一种带两个参数,这两个参数实际上是传递给这个类SdBaseFile的基类的。

答案 2 :(得分:1)

请记住'SdBaseFile(){}'是默认构造函数。这总是在一个类中定义,通常当一个框架不希望调用它的默认构造函数时,它将是一个私有构造函数。

其他构造函数似乎是你想要使用的。由于默认构造函数似乎没有做任何事情,除了构造一个没有与之关联的文件的类。如果我知道FatFile课程中的内容,我对此的印象会发生变化。