【C++王桂林】

第三章

封装:

  • 权限控制
  • 数据和行为在一起

声明与实现分离:

类中函数不占空间的

默认参数只能在声明上。

第四章

  • 构造器
    类中的默认参数只能在声明处,不能在定义处。

  • 拷贝构造器
    调用拷贝构造器。

  • private
    在同类之间是没有隐私

类中没有new新空间就不需要析构器。

sizeof、strlen

strcpy、memcpy
strcpy:根据’’确定拷贝结束位置;
mempy:拷贝的起始位置,以及拷贝的长度进行拷贝;

赋值运算符重载。

深拷贝

数据在栈上还是堆上

  1. 系统提供默认的赋值运算符重载,一经实现,不复存在。
  2. 系统提供的也是等位拷贝,也就是浅拷贝,会造成内存泄漏,重析构。
  3. 要实现深深的赋值,必须自定义。
  4. 自定义面临的问题有三个:
    • 自赋值
    • 内存泄漏
    • 重析构
  5. 返回引用,且不能用const修饰。

深拷贝代码

class A()
{
public:
 	A()
	{
		cout << this << " constructor"<<endl;
	}
	~A()
	A(const A  & another)
	{
	 	cout<<this<<" cpy construct from"<< &another<<endl;
	}
	A & operater operator =(const A &another)
	{
		cout<<this<<" operator= "<<&another<<endl;
	}
};
  • 传对象与传引用

    • 对于对象在函数中传引用会比拷贝构造效率高得多。
    • 传引用等价于,扩大了原对象的作用域。
  • 引用与返回

    • 栈上的对象是可以返回的,但不能返回栈上的引用(除非返回对象自己)

第五章

  • 类中的指针
    定义类中的指针,该指针为类整个命名空间下的一个字节偏移量;在这里插入图片描述
  • 函数指针数组
void (*pa[ ])() = {f, g, i, j};
原文地址:https://www.cnblogs.com/bitbitbyte/p/12536624.html