类、成员函数和单独编译
任何人都知道如何实现一个函数来使用类并将功能移动到类中。我如何向每个类添加适当的成员函数(或方法)以实现该函数的功能..也许可能添加参数化构造函数?例如,对于最初这样的函数,我将如何执行此操作:
//constant definitions
const int MAX_NUM_ACCOUNTS = 50;
BankAccount account[MAX_NUM_ACCOUNTS];
int findacct(const BankAccount account[], int num_accts, int requested_account);
{int main()}
// Function findacct:
int findacct(const BankAccount account[], int num_accts, int requested_account)
{
for (int index = 0; index < num_accts; index++)
if (account[index].acct_num == requested_account)
return index;
return -1;
}
Anyone knows how to implement a function to use Classes and move functionality into the classes. How can i add appropriate member functions (or methods) to each class so as to implement the functionality of the function .. maybe possibly adding parametized constructors?? For example, how would i do so for a function initially like this:
//constant definitions
const int MAX_NUM_ACCOUNTS = 50;
BankAccount account[MAX_NUM_ACCOUNTS];
int findacct(const BankAccount account[], int num_accts, int requested_account);
{int main()}
// Function findacct:
int findacct(const BankAccount account[], int num_accts, int requested_account)
{
for (int index = 0; index < num_accts; index++)
if (account[index].acct_num == requested_account)
return index;
return -1;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
findacct
是一个在类中移动函数的糟糕示例,因为它不会对特定帐户执行任何操作,而只是在多个帐户之间进行搜索。您可以将此类函数作为
static
成员函数移至 BankAccount 类中,但静态成员函数实际上与具有奇特名称的全局函数没有什么不同。对于 OOP 方法来说,更有趣的是在 BankAccount 类中移动一些作用于特定银行帐户的函数,例如从 更改为
在
下面的示例代码中,我将所有帐户存储在私有中向量。要创建新帐户,您必须调用提供 ID 号的静态类函数。请注意,这段代码包含许多微妙之处,除非您完全理解它,否则用作基础可能会很危险...不幸的是,这是 C++ 的一个特征,其中明显的逻辑语句可能会按逻辑运行,或者可能会让您的计算机表现得很奇怪。我的建议是在尝试该语言之前或同时,阅读一本好的 C++ 书籍并从头到尾地阅读它。
C++ 太复杂,有时不合逻辑(由于历史原因),无法仅通过实验来学习它。
findacct
is a bad example of a function to be moved inside a class because doesn't do anything on a specific account and just searches among several accounts.You can move this kind of function inside the
BankAccount
class as astatic
member function, but static member functions are really not that different from global functions with fancy names.Much more interesting for the OOP approach would be moving some function that acts on a specific bank account inside the
BankAccount
class e.g. something like changing fromto
In the following example code I've stored all accounts in a private vector. To create a new account you must call a static class function providing the ID number. Note that this code contains many subtleties and can be dangerous to use as a basis unless you understand it fully... this is unfortunately a characteristic of C++ where apparently logical statements may act logically or can just make your computer to act strangely. My suggestion is to grab a good C++ book and read it cover to cover before or while experimenting with the language.
C++ is just too complex and sometimes illogical (for historical reasons) to learn it just with experimentation.
我不确定您到底在问什么,但这里有一些观察结果:
不要使用恒定大小的数组。你要么浪费空间,要么溢出它们。使用向量。
不要使用缩写,如 num_accts 或 acct_num,使用可读的名称。我会将前者替换为
number_of_accounts
,将后者替换为number
,因为它是结构的一部分。不要自己编写线性搜索算法,它们已经在 STL 中实现了。您所要做的就是提供一个比较帐号的谓词。
下面是一些基于这些观察结果的示例代码:
如果您在理解这段代码时遇到困难,我建议您阅读一本优秀的 C++ 书籍 。
好吧,您不必为每个
find_if
调用编写特定的代码,您可以使用通用代码:当然,Boost 已经提供了更好的解决方案:
I'm not sure what you're asking exactly, but here are some observations:
Don't use arrays of constant size. You'll either waste space or overflow them. Use vectors.
Don't use abbreviations like num_accts or acct_num, use readable names. I would replace the former with
number_of_accounts
and the latter withnumber
, since it is part of a structure.Don't write linear search algorithms yourself, they are already implemented in the STL. All you have to do is provide a predicate that compares the account numbers.
And here is some example code based on these observations:
If you have trouble understanding this code, I suggest you get a good C++ book.
Well, you don't have to write specific code for every
find_if
call, you can go generic instead:And of course, Boost already provides a better solution:
我不确定你使用的是什么编程语言,因此我编写了简短的 sudo 代码,希望它对
你的 main()有帮助
I'm not sure what programming language you're using, thus I have written brief sudo-code of it, hope it'll help
on your main()