1.将定义与实现区分开
为了函数的可读性更强,代码看起来简洁明了,我们可以再创建一个新的class,右键新建,
我们可以将函数的声明放在MyClass.h中(注意:在函数的定义时,要在函数名前面加上类名::函数名)
将函数的定义放在MyClass.cpp中
2.public和private的使用
假设在如下情景中,如果我们在创建Base时考虑到了后续的使用,在创建时使用了public就可以避免这样的事情发生
定义:
1.public:表示这个成员哪里都可以使用,不用担心被修改,所以,一旦发布public的成员,是不可以改名的。
2.private:这个成员只可以内部使用,编译器进制除了该成员的内部外只用(学逆向的我们可以通过指针的方法访问)
测试结论:
1.被private修饰的,依旧存在在结构体中,宽度不变。
2.public/private可以修饰函数也可以修饰变量。
3.private真的不可以访问吗
通过前面的测试我们已经知道了经过private修饰的变量或者函数,编译器是不让我们在外部使用的,但是如果我们得到了该类的指针地址,就可以访问。
如图,当public存在调用函数时,我们可以获取对象的指针地址,从而访问private中的值。(只要类中public函数调用,就会传递类的指针)
4.class和struct的区别
1.权限的区别
我们创建一个struct结构体时,我们可以随意访问或者修改,初始化成员变量或者调用函数。
但是改为class后,就不能访问或者修改,初始化成员变量或者调用函数。
因此我们得出结论:
struct和class的区别在于权限的不同
2.继承中的区别
当两个class中存在继承关系时,如果不想因为继承而去修改class的私有属性,那么久需要在继承时添加
注意:
1.在两个class中要加上public,否则在继承时加上public也无法访问
2.
5.private是否被继承
通过观察我们发现,父类当中有public修饰又有private修饰,此时我们分别计算继承前后Student的宽度,可以发现继承后private修饰的变量也算入内存中,因此我们可以得出结论:
1.父类中的私有成员是可以被继承的
2.只是这些私有成员编译器不允许我们访问
3.我们可以通过获取指针地址的方式访问
6.作业
将昨天的作业全部改为class
1.实现声明与定义分开
2.添加public和private实现权限控制
Myclass.h
Myclass.cpp
test.cpp
注意:
在使用对象时要搞清楚子类父类,容易在使用时拿着父类的对象去访问。
在class继承时注意加上:public。
在函数定义时记得是::两个冒号。