30/09/2018, 17:03

thắc mắc về operator <<

giả sử có chương trình

#include <iostream>

int main()
{
      cout << "Hello world";
}

vậy không sửa hàm main, mình muốn in ra màn hình kết quả sau thì làm thế nào mn?
Entering the Hello program saying…
Hello, world.
Then exiting…

Trịnh Minh Cường viết 19:18 ngày 30/09/2018

Lần sau bạn nhớ dùng Markdown để đăng code nhé
à mà ý bạn

không sửa hàm main,

là sao nhỉ ? tức là viết một hàm khác hay sao ? mình chưa hiểu vấn đề cho lắm.

Trần Lê Trọng Thức viết 19:18 ngày 30/09/2018

tức là k động tới hàm main mà vẫn có thể xuất ra đc như vậy đó bạn
mình nghĩ định nghĩa lại dấu << bằng operator nhưng vẫn chưa đc

Trịnh Minh Cường viết 19:12 ngày 30/09/2018

mình không biết có cao thủ nào có cách khác hay không nhưng theo mình biết thì C và C++ nếu bạn viết một hàm mà không dùng hàm main để gọi nó thì nó sẽ không chạy hàm đó, vì compiler của C/C++ nó toàn chạy main trước nếu code này mà bên Java thì hình như có thể còn bên C++ mà đưa ra những dòng đó mà không động đến hàm main thì mình chưa biết

Trần Lê Trọng Thức viết 19:19 ngày 30/09/2018

bài này trong C++ bạn.
nếu mình thay dấu “operator <<” thành "operator < " như code bên dưới thì in ra được như mình muốn. nhưng làm như vậy thì có chỉnh sửa trong hàm main rồi.
còn đề nguyên << thì chỉ in ra “Hello World” thôi.

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

ostream& operator < (ostream &out, string str)
{
	out << "Entering the Hello program saying..." << endl;
	out << str;
	out << "Then exiting..." << endl;
	return out;
}

void main()
{
	cout < "Hello world\n";
	system("pause");
}
nhatlonggunz viết 19:09 ngày 30/09/2018

Vậy bạn hãy định nghĩa cái gọi là chỉnh sửa hàm main đi.
Vì chương trình luôn chạy ở hàm main. Cho dù có tạo ra bao nhiêu hàm đi nữa, chúng vẫn phải được sử dụng trong hàm main mới có tác dụng. Còn nếu vụ này làm được thì trình độ của mình chưa tới đó

Còn nếu không đụng chạm gì tới hàm main, hay theo bạn gọi là không chỉnh sửa hàm main, vậy cho mình hỏi, mình có thể xóa luôn hàm main không ?

Hình như mình từng đọc trong một cuốn sách C#, nó bảo là C# có thể tạo nhiều hàm main hay không có hàm main (cái vụ không có hàm main mình không chắc nha), nhưng phải làm gì đó cho compiler biết đâu là điểm bắt đầu của chương trình.

Gió viết 19:11 ngày 30/09/2018

Overload << là dc

#include <iostream>
using namespace std;

ostream& operator << (ostream &out, const char* str)
{
	puts("Entering the Hello program saying..." )
	puts(str);
	puts( "Then exiting...");
	return out;
}

int main()
{
	cout << "Hello world\n";
        return 0;
}
nhatlonggunz viết 19:15 ngày 30/09/2018

Anh ơi, cái này là sao anh nhỉ.
Theo em nghĩ thì nó là làm cái mặc định cho “<<” operator hả ? Dạng như constructor của class ấy ?

Trần Lê Trọng Thức viết 19:05 ngày 30/09/2018

cài này là operator mà bạn

nhatlonggunz viết 19:05 ngày 30/09/2018

Bạn có link nào nói về cái này không ? Cái này với mình mới quá.

Trần Lê Trọng Thức viết 19:14 ngày 30/09/2018

cái này trên mạng đầy bạn ơi học môn hướng đối tượng thì có cái phần này mà.

Bài liên quan
0