2012年8月30日18:54:35

C++深浅拷贝与多态机制
本文探讨了C++中深拷贝与浅拷贝的区别及应用场景,通过实例说明浅拷贝可能导致的问题。此外,还介绍了多态的实现机制、虚函数的定义与使用、以及类之间的关联关系。

1.strcpy()的具体实现

最好使用strncpy()代替strcpy()的使用,strncpy()的实现原理

 

2. 拷贝构造函数和赋值运算符、智能指针

2.1、浅拷贝的危险之出在于有可能导致内存的二次释放从而造成异常,深拷贝则避免了这一情况的发生。但“万恶”的浅拷贝就无一点好处,而深拷贝就无一个缺点吗? 


如果一个类里面没有指针类型的数据成员的话,完全可以用浅拷贝啊,这样很方便,省去了写一个拷贝构造函数 


2.2 在C++中需要时刻考虑这一隐晦的问题,在C#中有没有一种机制能够避免或解决这类问题呢?正如C#的垃圾回收机制,避免了C\C++中“圈地不还”情况的发生。 

C#不懂啦,但JAVA中好像也可以自动回收那些用户忘了回收的内存,避免内存的泄露。

例如,在一个类中,有一个指向一个Buffer的指针,所以我们可以说这个指针指向了一个资源(这个资源可以是一块保存数据的内存)。
浅拷贝,也就是按照比特一位一位地进行拷贝,是把一个类完全一样拷贝到另一个类。这时就出现问题了:类内部的指针的值是一样的,也就是说,两个类的实例内部的指针指向了同一块内存。当这两个对象析构的时候,同一块内存就会给析构两次,当然会出现问题。
深拷贝,就是在这点上和浅拷贝不同的,也就是说,在拷贝的时候,深拷贝会提供一块新的内存用来保存数据,并使新的对象的指针指向这块内存,这两个对象析构的时候,也就不会把同一块内存析构两次了。
一般,如果一个类的作者没有提供一个拷贝函数,编译器会自动提供一个拷贝函数,而这个拷贝函数就是浅拷贝。

3.多态的实现机制,虚函数的定义,重载,覆盖,隐藏,基类和派生类虚函数继承


4.类的6中关联关系

依赖,关联(单向,双向),聚合,组合,继承,实现

5.接口重用和代码的重用

 

6.public private,protected继承

公有继承:派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类的保护和私有成员。


转载于:https://my.oschina.net/u/185531/blog/75743

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值