What will be output of the following code#includeusing namespace std;class abc{ public : void main() { cout

Questions by Avaited   answers by Avaited

Showing Answers 1 - 5 of 5 Answers

Siva Nookala

  • Apr 8th, 2006

When a program begins running, the system calls the function main, which marks the entry point of the program. By default, main has the storage class extern. Every program must have one function named main, and the following constraints apply:No other function in the program can be called main.main cannot be defined as inline or static.C++ main cannot be called from within a program.C++ The address of main cannot be taken.C++ The main function cannot be overloaded.

  Was this answer useful?  Yes

The code you have given has many compile time error , but conceptually it will work I have corrected some lines like  cout<<" its in main program "< a.main(); it will not work because main the member function is void type it will return nothing while << director needs something.so change void main() to int main() and return 0 at end.exit() function will not work in cout because it returns void type.

Also add some lines like printing address of main function,It is possible to take address of main function which is denied by Siva Nookala. It is also possible to call function main in a program but this will call recursion.

When any excutable come into run state means process invoke, the OS doesn't actually call the entry-point function
main() which you write. Instead, it calls a C/C++ run-time startup function which is added by Linker during linking time.
CRT Startup function initializes the CRT library so that you can call functions such as malloc, free, _beginthread,_endthread etc.
It also ensures that any global and static C++ objects that you have declared are constructed properly before entry point
function main()'s  code come into executes.
Main() function is nothing but callback thread function for primary thread which created when first time process created by OS
and actually this primary thread determines the lifespan of process. Process is nothing but a Kernel object which manage all
other resources like memory , other kernel object reference and other devices like input/output.

HOPING THIS WILL CLEAR THE , SEE FOLLOWING CORRECT CODE (write me : mohit.gonduley@gmail.com)
#include "stdio.h"
#include "stdlib.h"
#include "iostream"
using namespace std;

class abc
  public :
           int main()
              cout<<" Its main function "<<endl;
       return 0;

int main(int c, char **v)
    abc a;
    printf("\n Address of main Function = %u \n",main);
    {    cout<<" Error can not accept it ";   }
     cout<<" its in main program "<<a.main()<<endl;
    return 0;


Ramachandra Rao

  • Sep 13th, 2006

No major changes required to the orginal program. I tried compiling the original program in VC++6.0, execution starts from void main which is actually in the class so compilation problem are coming. The program work fine if you change the main function in the class as int return type write line "return 0" line then it executes well, program starts from C type main function.

  Was this answer useful?  Yes


  • Sep 17th, 2006

The program you supplied has many type'o's so it will output only compile time errors.However if you fix the syntax, there'll be no controversy in this source : it ALWAYS outputs : its in main program Its main function because number of parameters passed to main is at least 1 (first parameter is the program name) so c will not be < 1.As for the main method in abc, it does not conflict with standard entry point main because it's a member of abc, the only name conflict occurs when you try to overload the main function (outside the class) in any way , e.g. :int fun1() {}int fun2(int) {}works (simple overloading), butint main() {}int main(int c, char **v) {}will give a conflicting declaration error because entry point global main function is a special case.

  Was this answer useful?  Yes


  • Oct 11th, 2006

The code mentioned would give errors while compiling. But when i have done some minor modifications to successfully compile the code, I was surprised to c that this code works fine.

Later i had to come to a conclusion that though there are two main() in that code, they are entirely different. The one within the class is class-specific main(), so it doesnt conflict with the original main(), that is the entry point of the code.

Ouptput would be:

its in main programIts main function 

Note: the output continuous because the stmts have no escape sequence'n' or endl. 

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.


Related Answered Questions


Related Open Questions