埃尔法哥哥C++语言类的详解和示例( 二 )


析构函数具备以下特点:
1)构造函数必须是 public 属性的 。
2)构造函数没有返回值 , 因为没有变量来接收返回值 , 即使有也毫无用处 , 不管是声明还是定义 , 函数名前面都不能出现返回值类型 , 即使是 void 也不允许 。
析构函数不允许重载的 。 一个类只能有一个析构函数 。
C++程序也很优雅
很多人说C++程序很烦琐 , python程序很优雅 , 说这话人的很荒谬 , 那是因为他C++的功力不够 。
示例(book210.cpp)
类的其它知识
关于类的其它知识 , 包括this指针、static静态成员、友元等内容 , 我不介绍了 , 大家可以找资料看看 , 也可以不看 , 意义不大 , 时间太宝贵 , 有太多重要的知识要学习 , 没必要把时间浪费在这些不痛不痒又没什么用的知识点上 , 以后有时间了再看也行 。
可变参数
我们已经介绍过printf、fprintf、sprintf、snprintf函数 , 它们是一组功能相似的函数 , 并且有一个共同点 , 就是函数的参数列表是可变的 。
函数的声明如下:
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
在实际开发中 , 我们的自定义函数也需要可变参数 , 实现类似上述函数的功能 , 例如CFile类的Fprintf成员函数 , 函数的声明和定义如下:
va_list指针、va_start宏、va_end宏难以理解 , 大家会抄就行 , 我不详细介绍 , vfprintf函数把宏分析的结果输出到文件 , 还有一系列功能相似的函数 , 声明如下:
// 输出的屏幕
int vprintf(const char *format, va_list ap);
// 输出到文件
int vfprintf(FILE *stream, const char *format, va_list ap);
// 输出到字符串
int vsprintf(char *str, const char *format, va_list ap);
// 输出到字符串 , 第二个参数指定了输出结果的长度 , 类似snprintf函数 。
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
【埃尔法哥哥C++语言类的详解和示例】可变参数的知识不只这些 , 但是 , 在实际开发中 , 我只见过用于格式化输出 , 其它的应用场景我没有见过 。