C++ Primer 复习

今天在家又看了一些前阶段面试下来的问题,发现自己C++里面不懂的还是很多。所以整理了一下部分内容:

1.B是一个基类,D是B的一个派生类,代码如下:

class B

{

void over();

void over(string);

}

 

class D: public B

{

void over(int);  // 这个函数在这里并不是overload了前面B中的那两个,而是彻底覆盖了,并非想当然的overload

using B::over;  // 如确实需要如想像中的那样overload,那么就应该加上这句,它会导入所有over名的函数,所有!!

}

 

2.B是一个基类,D是B的一个派生类,代码如下:

class B

{

protected:

int a;

}

 

class D: public B

{

void test()

{

B b;

b.a = 1;  // it’s wrong。以父类为类型来创建的对象不能访问其protected 成员

D d;

d.a = 1 // it’s ok。但是以自身为类型来创建的对象可以访问其protected成员

a = 1; // it’s ok。 this指针形式也可以访问。

}

}

 

3.B是一个基类,D是B的一个派生类,代码如下:

class B

{

public :

virtual void test(int a =1)

{

}

}

 

class D: public B

{

public:

void test(int a= 2)

{

}

}

 

void main()

{

B * pb = new B;

B* pd = new D;

D* pd2 = new D;

pb->test();    // a==1

pd->test();    // a==1

pd2->test();   // a==2

}

 

By Lu Jun

80后男,就职于软件行业。习于F*** GFW。人生48%时间陪同电子设备和互联网,美剧迷,高清视频狂热者,游戏菜鸟,长期谷粉,临时果粉,略知摄影。

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.