15.3.2 struct 默认是 public
15.4 public 是类内类外都可以访问到
15.5 protected 类内可以,类外不可以,派生类可以
15.6 private 类内可以,类外不可以
16 建议将所有成员属性设置为私有
16.1 自己提供公共的对外接口来进行 set 或者 get 方法访问,可以在 set 里进行判断
设置的值合不合法
17 立方体案例
18 点和圆关系案例
18.1 圆内的属性里有个其它的自定义数据类型 Point
18.2 三种关系判断
18.3 分文件编写
18.3.1 .h 中写类的成员函数声明
18.3.2 .cpp 中写成员函数实现
19 对象的初始化和清理
19.1 构造函数
19.1.1 没有返回值 没有 void,类名相同,可以发生重载,可以有参数
19.2 析构函数
19.2.1 没有返回,没有 void ,函数名称: ~类名,不可以发生重载,不可以有参
数
19.3 系统会默认调用 构造函数和析构函数,而且只会调用一次
19.4 如果程序员没有提供构造和析构,系统会默认提供,空实现
20 构造函数的分类及调用
20.1 按照参数分类
20.1.1 无参构造(默认构造) 有参构造
20.2 按照类型分类
20.2.1 普通构造函数 拷贝构造函数
20.3 无参构造写法 和调用
20.3.1 Person p1 ; 注意不能写 Person p1() ,因为编译器认为这个是函数声明
20.4 有参构造写法 和调用
20.4.1 Person p2(10) 或者 Person p2 = Person(10)
20.4.2 Person(10) 匿名对象 ,执行当前行后就会释放这个对象
20.5 拷贝构造函数
20.5.1 Person( const Person & p )
20.5.2 拷贝构造函数是在对象被被创建时调用的,而赋值函数只能被已经存在
了的对象调用
20.5.3 String c = a; // 调 用 了 拷 贝 构 造 函 数 , 最 好 写 成 c(a);
c = b; // 调用了赋值函数
20.5.4 Perons p1( p2) 或者 Person p1 = Person(p2)-》拷贝
20.5.5 不能用拷贝构造函数初始化匿名对象
20.5.5.1如果写成 Person (p1) 这种写法等价于 Person p1
20.5.5.2写到右值可以做拷贝构造函数
20.6 Person P = 100 隐式类型转换 相当于调用 Person p = Person(100)-》有参
21 拷贝构造函数调用时机