Tuesday, January 12, 2010

c++part7

Four mark Questions

1. Explain the O/P
class A
{
int a;
public:
A(int h=0) { a= h;}
Void show( ) { cout<<”\n a=”< Void operator++( ){ ++a; cout<<”\n ++ no arg called”;}
Void operator++( int g){ ++a; cout<<”\n ++ one arg called”;}

};
void main( )
{
A ss(100);
++ss;
getch();
}
a. ++ no arg called b. ++ one arg called c. Both a & b d. None

2. Explain the O/P

class A
{
int a;
public:
A(int h=0) { a= h;}
Void show( ) { cout<<”\n a=”< Void operator++( ){ ++a; cout<<”\n ++ no arg called”;}
Void operator++( int g){ ++a; cout<<”\n ++ one arg called”;}

};
void main( )
{
A ss(100);
ss++;
getch();
}
a. ++ no arg called b. ++ one arg called c. Both a & b d. None

3. When is the copy constructor called in the following prog:-
class string
{
char ss;
public:
string(char *s=NULL){ strcpy(ss,s);}
string(string &s){ ss=strdup(s.ss); cout<<”\n copy called”;}
void disp( ) { cout<<”\n ss=”< string& operator=(string &s)
{
ss=strdup(s.ss); cout<<”\n assignment called”;
return (*this);
}
};
void main( )
{
1. string ss1(“ACME”),ss2;
2. ss2=ss1;
3. string ss3(ss2);
4. string ss4=ss1;
}

a. at line nos., 3,4 b. at line nos., 2,3,4 c. at line no., 3 only d. line no. 2

4. When is the assignment operator method called in the following prog:-
class string
{
char *ss;
public:
string(char *s=NULL){ strcpy(ss,s);}
string(string &s){ ss=strdup(s.ss); cout<<”\n copy called”;}
void disp( ) { cout<<”\n ss=”< string& operator=(string &s)
{
ss=strdup(s.ss); cout<<”\n assignment called”;
return (*this);
}
};
void main( )
{
1. string ss1(“ACME”),ss2;
2. ss2=ss1;
3. string ss3(ss2);
4. string ss4=ss1;
}

a. at line nos., 3,4 b. at line nos., 2,3,4 c. at line no., 2,4 d. line no. 2

5. What is the output:-
const int MAX= 10;
class stack
{
protected: int st[MAX},top;
public:
stack() { top= -1; }
void push(int var)( st[++top]=var; }
int pop( ) { return st[top--]; }
};
class stack2:public stack
{
public:
void push(int var)(
if(top+1 stack::push(var);
else
{cout<<”\n Error: stack is full”; exit(1);}
}
int pop( ) {
if(top>=0) return stack::pop( );
else
{cout<<”\n Error : stack empty”; exit(1); }
}
};
void main( )
{
stack2 ss1;
ss1.push(10);
ss1.push(11);
ss1.push(12);
cout<<”\n”<cout<<”\n”<cout<<”\n”<cout<<”\n”<}
a. Error b. 10 11 12 error:stack is empty c. None d. 10 11 12

6. What is the o/p:
class A
{
public:
void show(){
cout<<”\n class A”;}
};
class B
{ public: void show(){
cout<<”\n class A”;}
};
class C: public A, public B { };
void main( )
{
C ss;
ss.show();
}
a. class A b. class B c. Error d. None

7. What is the o/p:
class A
{
public:
void show(){
cout<<”\n class A”;}
};
class B
{ public: void show(){
cout<<”\n class A”;}
};
class C: public A, public B { };
void main( )
{
C ss;
ss.A::show();
ss.B::show();
}
a. class A b. class B c. Error d. Both a & b

8. What is the O/p:
class string
{
char *ss;
public:
string(char *s=NULL){ strcpy(ss,s);}
~string( ){ delete ss;}
int operator==(string &s)
{
int a;
if(strcmp(ss,s.ss)==0)
return 1;
else
return 0;
}
void disp(){ cout< };
void main()
{
string s1(“ACME”),s2(“ACME”);
clrscr();
s1.disp();
s2.disp();
if(s1==s2)
cout<<”\n both are equal”;
else
cout<<”\n both are not equal”;
}
a. both are equal b. both are not equal c. Error d. None

9. What is the o/p:
class A
{
int a;
public: A(int h=0){ a=h;}
void show(){ cout<<”\n a=”< };
class B: public A
{
int b;
public: B(int h=0){ b=h;}
void show(){ cout<<”\n b=”<};
void main()
{
B ss(20);
ss.show();
}
a) a= 20 b) b=20 c) Both a & b d. None

10.What is the O/p
class A
{
int a;
public: A(){ a=0;}
A(int h){ a=h;}
void show_a(){ cout<<”\n a=”< };
class B: public A
{
int b;
public: B(){ b=0;}
B(int h){ b=h;}
void show_b(){ cout<<”\n b=”< };
void main()
{
B ss,ss2(10);
ss.show_a();
ss.show_b();
ss2.show_a();
ss2.show_b();
}
a) a=0 b=0 a= 0 b= 10 b) a=0 b=0 a=10 b= 10 c) Error d. None

11.In the below program Whish statement must be used instead of ? do that the
O/P is a=10 b=10
class A
{
int a;
public: A(){ a=0;}
A(int h){ a=h;}
void show_a(){ cout<<”\n a=”< };


class B: public A
{
int b;
public: B(){ b=0;}
? { b=h;}
void show_b(){ cout<<”\n b=”< };
void main()
{
B ss2(10);
ss2.show_a();
ss2.show_b();
}
i. B(int h) ii. B(int h):A(h+2) iii. B(int h):A(a) iv B(int h):A(h) v)B(int h):A(1)

a. Only I b. ii, iv, v c. ii, iii, iv, v d. iv, ii

12. What is the order of constructors called in the below program:
class A
{
public:
A() { cout<<”\n constructor A called”; }
~A() { cout<<”\n Destructor A called”; }
};
class B: public A
{
public:
B() { cout<<”\n constructor B called”; }
~B() { cout<<”\n Destructor B called”; }
};
class C: public A
{
public:
C() { cout<<”\n constructor C called”; }
~C() { cout<<”\n Destructor C called”; }
};
class D: public B, public C
{
public:
D() { cout<<”\n constructor D called”; }
~D() { cout<<”\n Destructor D called”; }
};
void main()
{ D ss; }
i) constructor C called
ii) constructor A called
iii) constructor D called
iv) constructor B called
a. ii, iv, I, iii b. ii, iv, ii, I, iii c. iii, I, iv, ii d. iii, I, ii, iv, ii


13. What is the order of destructors called in the below program:
class A
{
public:
A() { cout<<”\n constructor A called”; }
~A() { cout<<”\n Destructor A called”; }
};
class B: public A
{
public:
B() { cout<<”\n constructor B called”; }
~B() { cout<<”\n Destructor B called”; }
};
class C: public A
{
public:
C() { cout<<”\n constructor C called”; }
~C() { cout<<”\n Destructor C called”; }
};
class D: public B, public C
{
public:
D() { cout<<”\n constructor D called”; }
~D() { cout<<”\n Destructor D called”; }
};
void main()
{ D ss; }
i) Destructor C called
ii) Destructor A called
iii) Destructor D called
iv) Destructor B called
a. ii, iv, I, iii b. ii, iv, ii, I, iii c. iii, I, iv, ii d. iii, I, ii, iv, ii






four marks
1. a 11.b
2. b 12.b
3. a 13.d
4.d
5.b
6.c
7.d
8.a
9.b
10.a