Ваша int display()
функция не возвращает int
, поэтому вы будете иметь неопределенное поведение после вызова этой функции. Если он вернул int
, это число было напечатано, но я подозреваю, что это не то, что вы хотели.
Мусор, который вы видите - это int
, выбранный из стека (потому что display()
должен был положить туда int
). По какой-то причине он был помещен в какую-то другую функцию, но теперь ее нет, поэтому может случиться что угодно. Чтобы избежать этого, вы могли бы объявить свою функцию void display()
- но тогда вы не сможете ее транслировать, что, как она выглядит, вы хотите сделать.
Если вы хотите иметь возможность потоковой передачи ваших объектов, вам нужно определить операторы потоковой передачи для выполнения этой работы. Я заменил вашу функцию display()
на оператор вывода потока (operator<<
) здесь:
#include <iostream>
//#include<bits/stdc++.h> // non-portable, don't use it
// using namespace std; // brings in too much in the namespace
using std::cout; // prefer this or just write std::cout everywhere
class Bankaccount {
public:
int accnumber, accbalance;
friend std::ostream& operator<<(std::ostream& os, const Bankaccount& ba) {
return os << "Account number is : " << ba.accnumber
<< "\nAccount balance is: " << ba.accbalance << "\n";
}
};
int main() {
Bankaccount a;
Bankaccount b;
a.accnumber = 123456;
a.accbalance = 50;
b.accnumber = 67890;
b.accbalance = 2000;
// std::endl is approx. the same as "\n" + std::flush. You don't need flushing.
cout << "Account details of A\n\n" << a << "\n";
cout << "\nAccount details of B\n\n" << b << "\n";
}