书中的这个例子不好吗?
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(允许使用保留名称)并认为“这就是它的完成方式”而习惯了这种风格,而没有意识到这些名称是专门使用的,因为它们是保留。
我正在通读 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(允许使用保留名称)并认为“这就是它的完成方式”而习惯了这种风格,而没有意识到这些名称是专门使用的,因为它们是保留。