关于对象(类)相关的知识点

1.protected成员

class base

{

protected:

int int_pro;

};

class A : public base

{

public:

A(int da) {int_pro=da;}//

void print(A &obj){obj.int_pro = 23;}//

void printpro(base &obj){obj.int_pro=5;}//

};

2.

class  design{

public:

adsHashTable * adsGetTable() {return _ppp;}

void adsSetTable(adsHashTable * temp) {_ppp=temp;}

...

private:

adsHashTable * _ppp;

}

design _de;

adsHashTable *ne_w = _de->adsGetTable();

ne_w=new adsHashTable(100);

_de->adsSetTable(ne_w);

3.关于继承和派生的理解

按访问方式分为两种:1.在子类内部访问父类成员;2.通过类对象访问内部成员

对1而言:不管何种继承方式(public,protected,private),在子类中都可以访问父类的public,protected成员,不能访问private成员

对2而言:继承之后,子类拥有父类所有成员变量,并且外加自己特有的变量。访问规则是,通过对象只能访问public成员。不同的继承方式导致继承自父类的成员变量的访问级别发生变化。public继承,父类成员变量访问级别在子类中不改变;protected继承,父类的public变量在子类变成protected的,其他不变;private继承,父类的public,protected变量在子类变成private;

4.构造函数:深拷贝和浅拷贝

通常的赋值以及默认拷贝构造函数都是浅拷贝(有动态成员变量时,出问题,所以需要深拷贝)

深拷贝就是调用拷贝构造函数时,对动态成员变量重新分配空间。

class A{ class B{

private:                                     private:

int* p;                                       int* p;

public:                                      public:

A(){p=new int(100);}              B(const B& t){p=new int(100); *p=*(t.p);}

}                                                }

A a1(a2);                                   B b1(b2);

A:a1的p指向的是a2的p所指的内存,即a1.p和a2.p指向同一块。

B:b1的p指向一段内存,b2指向另一段内存,然后拷贝就是把b2内存中的内容复制到b1所指向的内存里面。

5.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值