我想知道对象的调用应该显示什么。我有一个名为big_number的类,它有一些不同的构造函数。在另一种方法中,我宣布一个对象' a'使用类big_number如下:
big_number a;
cout << "Default constructor gives " << a << endl;
我的构造函数是:
big_number::big_number()
{
head_ptr = 0;
tail_ptr = 0;
positive = false;
digits = 0;
base = 10;
}
(虽然我确定这个构造函数是错误的。)
测试文件的完整代码:
int main()
{
int n1, n2;
unsigned int base;
string s;
char choice;
do
{
cout << "Type 'd' to test default constructor" << endl;
cout << "Type 'i' to test int constructor" << endl;
cout << "Type 's' to test string constructor" << endl;
cout << "Type 'a' to test assignment" << endl;
cout << "Type '>' to test input operator" << endl;
cout << "Type '=' to test comparison operators" << endl;
cout << "Type 'q' to quit" << endl;
cin >> choice;
if (toupper(choice) == 'D')
{
big_number a;
cout << "Default constructor gives " << a << endl;
}
//More Code
答案 0 :(得分:1)
如果通过&#34;调用一个对象&#34;你的意思是你在对象operator<<
上使用a
作为流参数调用cout
:它显示你要定义的任何内容(在big_number
的成员函数中或一个免费的功能)。没有&#34;默认&#34; operator<<
用于用户定义的类。所以,如果你定义它像
#include <iostream>
struct big_number
{
template<typename T>
friend T& operator<< (T& stream, const big_number& bn);
};
template<typename T>
T& operator<<(T& stream, const big_number& bn) {
return (stream << "Hello World");
}
int main()
{
big_number a;
std::cout << a << std::endl;
}
...它只会显示&#34; Hello world&#34;。
使其成为friend
函数的目的是它可以访问big_number
的私有数据成员(因为您通常希望它显示取决于存储在对象中的数据的内容,以及不是常数&#34; Hello world&#34;)。因此,在operator<<
定义中,您可能会遍历链接列表中的数字并将它们推送到流中(如果我正确理解您要执行的操作)。