GeekInterview.com
  I am new, Sign me up!
 
GeekInterview.com  >  Interview Questions  >  Programming  >  C++
Go To First  |  Previous Question  |  Next Question 
 C++  |  Question 73 of 203    Print  
what will be output of the following code
#include
using namespace std;
class abc
{
public :
void main()
{
cout<<" Its main function "< }
};
int main(int c, char **v)
{
abc a;
if(c<1)
{
cout<<" Error can not accept it "< exit(1);
}
cout<<" its in main program "< a.main();

return 0;
}

  
Total Answers and Comments: 5 Last Update: October 11, 2006     Asked by: Avaited 
  
 Sponsored Links

 
 Best Rated Answer
Submitted by: aparna
 

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. 



Above answer was rated as good by the following members:
wael.salman, zeal_goswami
April 08, 2006 13:31:04   #1  
Siva Nookala        

RE: what will be output of the following code#in...
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.
 
Is this answer useful? Yes | NoAnswer is useful 0   Answer is not useful 1Overall Rating: -1    
April 20, 2006 07:08:39   #2  
mohit12379 Member Since: March 2006   Contribution: 17    

RE: what will be output of the following code#in...


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);
if(c<1)
{ cout<< Error can not accept it ; }
cout<< its in main program <<a.main()<<endl;
return 0;
}
**************************************************************************************************


 
Is this answer useful? Yes | NoAnswer is useful 1   Answer is not useful 0Overall Rating: +1    
September 13, 2006 11:01:28   #3  
Ramachandra Rao        

RE: what will be output of the following code#in...
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.
 
Is this answer useful? Yes | No
September 17, 2006 12:49:12   #4  
jayq        

RE: what will be output of the following code#in...
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.
 
Is this answer useful? Yes | No
October 11, 2006 03:11:28   #5  
aparna        

RE: what will be output of the following code#in...

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.


 
Is this answer useful? Yes | NoAnswer is useful 1   Answer is not useful 0Overall Rating: +1    


 
Go To Top


 Sponsored Links

 
About Us -  Privacy Policy -  Terms and Conditions -  Contact -  Ask Question -  Propose Category -  Site Updates 

Copyright © 2005 - 2009 GeekInterview.com. All Rights Reserved

Page copy protected against web site content infringement by Copyscape