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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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();
}

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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();
}

chevron_right


Output:

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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();
}

chevron_right


Output:

In constructor main()
GFG
In destructor main()



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.