书中的这个例子不好吗?

Is this example from a book a bad?

我正在通读 A Complete Guide to Programming in C++,作者是 Ulla Kirch-Prinz 和 Peter Prinz,由 Jones & Bartlett 出版。其中有一个 class(第 246 页)的示例,我认为这是一个主要问题——不是因为它是一个错误,而是我听说你永远不应该做的事情:

// account.h
// Defining the class Account.
// ---------------------------------------------------
#ifndef _ACCOUNT_       // Avoid multiple inclusions.
#define _ACCOUNT_

#include <iostream>
#include <string>
using namespace std;

class Account
{
    private:                // Sheltered members:
        string name;        // Account holder
        unsigned long nr;   // Account number
        double balance;     // Account balance

    public:                 //Public interface:
        bool init( const string&, unsigned long, double);
        void display();
};

#endif   //  _ACCOUNT_

include guard 的宏以下划线开头和结尾。据我所知,下划线保留供标准库、操作系统和编译器使用,除非您正在创建操作系统或编译器,否则几乎没有理由使用它。

我知道这只是一个例子,但出于教给人们良好的编程习惯的意图和目的,他们似乎仍然把这件事搞砸了。话虽如此,我对此还是很陌生,所以我可能是错的,但它是合适的。

是的,这些是保留名称,但您不太可能 运行 遇到问题。

请注意,在这种情况下,它只是保留的,因为它后面跟着一个大写字母。 +账户 就可以了。

是的,我同意书籍真的不应该采用这种风格。它基本上源于人们通过查看实现库 headers(允许使用保留名称)并认为“这就是它的完成方式”而习惯了这种风格,而没有意识到这些名称是专门使用的,因为它们是保留。