Title

候捷c++学习

浅拷贝:

 如图所示a指向Hello,b指向World,直接进行b = a的赋值操作,导致b和a指向同一块地方,那么b原来指向的World就会发生内存泄漏,且由于a和b指向同一块地方,改变a也会影响b

深拷贝:

 a指向He,b指向World,想要把b深拷贝给a,分三步走:

1、 清空a原来指向的内存空间

 2、开辟和b同样大小的空间

 

3、将b的内容复制过去

 但是要注意,先得检查在赋值之前,是否存在a=a这样的赋值情况

 

否则:

new三个动作:

分配内存、转型、构造函数 

 delete两个动作:

调用析构函数、释放内存

 成员函数有一个隐藏的参数this

 黄色部分可写可不写,不写编译器自动帮我们加

静态函数只能处理静态数据

 调用静态函数的两种方式:

 静态实现单例

 更好的写法,需要单例的时候就创建

 Copy-on Write 写时复制

 当前,a,b,c三个内容都是hello,a如果要改变hello,不能影响b和c,如何做到?

a想改内容,copy一份让a来改,b,c两人共享原内容

 

复合,has a

委托,用指针指向a

 

继承,is a

如:界门纲目科属种

父类数据被完全继承,父类是子类的一部分

 虚函数:

子类可以调用父类的数据,和函数,但是需不需要重新定义父类的函数呢?

(1)non-virtual函数:父类不希望子类重新定义(override)的函数

(2)virtual函数:希望子类重新定义(override),且你对它已经有默认定义了

(3)pure-virtual函数:希望子类一定要定义,且你对它没定义

pointer-like-class,智能指针

function-like-class,仿函数

 

reference 引用,int& r = x, r代表x,营造sizeof(r) =  sizeof (x) ,&r = &x 假象

 动态绑定三个条件:

(1)通过指针(2)指针向上转型(3)使用虚函数

虚函数,动态绑定,虚指针+虚函数表,多态

posted @ 2023-12-09 21:41  长大想当太空人  阅读(60)  评论(0)    收藏  举报