How can we write main as a class in C++?
As it is already known that main() method is the entry point in any program in C++, hence creating a class named “main” is a challenge and is generally not possible. But this article explains how to write a class named “main” in C++.
What happens when we try to write a class named main?
Writing a class named main is not allowed generally in C++, as the compiler gets confused it with main() method. Hence when we write the main class, creating its object will lead to error as it won’t consider the ‘main’ as a class name.
Example:
// C++ program to declare // a class with name main #include <bits/stdc++.h> using namespace std; // Class named main class main { public : void print() { cout << "GFG" ; } }; // Driver code int main() { // Creating an object of class main main obj; // Calling the print() method // of class main obj.print(); } |
Output:
Compilation Error in CPP code :- prog.cpp: In function 'int main()': prog.cpp:17:10: error: expected ';' before 'obj' main obj; ^ prog.cpp:18:5: error: 'obj' was not declared in this scope obj.print(); ^
How to successfully create a class named main?
When the class name is main, it is compulsory to use keyword class or struct to declare objects.
Example:
// C++ program to declare // a class with name main #include <bits/stdc++.h> using namespace std; // Class named main class main { public : void print() { cout << "GFG" ; } }; // Driver code int main() { // Creating an object of class main // Add keyword class ahead of main class main obj; // Calling the print() method // of class main obj.print(); } |
GFG
How to write a constructor or destructor named main?
Writing a constructor or destructor named main is not a problem, as it means the class name must be main. We have already discussed how to make a class named main above.
Example:
// C++ program to declare // a class with name main #include <bits/stdc++.h> using namespace std; // Class named main class main { public : // Constructor main() { cout << "In constructor main()\n" ; } // Destructor ~main() { cout << "In destructor main()" ; } void print() { cout << "GFG\n" ; } }; // Driver code int main() { // Creating an object of class main // Add keyword class ahead of main class main obj; // Calling the print() method // of class main obj.print(); } |
In constructor main() GFG In destructor main()