C与C++
C++提供了类与对象的特点
字符串相当于一个ptr,会指向字符串在哪个地址,四个字符串,大小为四个指针
文件组成
头文件
封装
数据一般都是private,只有自己人看到,可以public,privat交替写
想要privat的数据,可以先访问public的函数,通过函数来传递数据。
构造函数
C++,想要创建一个对象,构造函数会自动创建
特点
函数名称必须和类相同,无返回值,构造函数特有的一种写法 r设到re区中,i设到im区中,在初始化阶段赋值
下面那个问题是可以的,但是效率差一些
:后面可以做的事情是设初值,和初始化
注 不带指针的,就不太需要析构函数
重载
图中问题中,会出现二义性,会编译错误
能够重载原因是因为,编译器会经过编译,根据函数名和参数列表,会得到一个全新的实际名称,这就是重载相同函数时可以被区分的原因
不建议将构造函数放到privat里头,不然的话很难调用,要用单例模式才行
对于不想改变数据的函数,为常量成员函数,即加个const,问号这里不可以,因为调用时const,但是如果函数体里面没有加对应const的话,会产生二义性
传值或者引用
引用相当于指针,传引用相当于传指针
友元
可以不用通过函数取的private 的数据,可以直接拿
注意
最好一直用引用传值,不能改变的话加const,且记住局部变量不允许传引用出去
引用接收方式
非成员函数的操作符重载(不是在类中定义的函数)
浅拷贝
两个指针指向同一个区域,用指针a改变区域,指针b也受影响
堆栈内存
栈的生存周期
静态对象特性
全局
内存泄露
delete有两步,先是删除动态分配的内存,再分配string本身的指针
注意
内存泄漏的不是灰色区域,而是灰色区域的指针指向的空间
静态数据要在类外设初值,静态函数调用方式可以在没有对象的时候调用,也可以通过对象调用
类鱼类的关系-compostion
继承
最好将父类的析构函数设置为virtual