2 :声明类类型和类与结构体的异同
→ 声明类
class 类名
{
private:
私有成员和方法
public:
公有成员和方法
};
→比较类和结构体
在面向对象程序中结构体存在的理由:由于C++必须要兼容C
不同点:在没有显示的说明结构体或者类的访问控制权限的情况下(private, public)
结构体为公有的
类为私有的
例如: struct Student{ int num}; 这个num 为公有外部可以访问
class Student{ int num}; 这个num 为私有外部无法访问
其他情况都是想同的 ,如果是面向对象的编程建议使用class而摒弃结构体
3 : 对象的三种定义方式
→ 先声明类类型然后在定义对象(常用)
→ 在声明类类型的同时定义对象
→ 不出现类名直接定义对象
例如:
class Student(){int num};
第一种
class Student(){int num};
Student s;
第二种
class Student(){int num} s;
第三种
class {int num}s;
4 : 类外定义成员函数(面向对象的初步体验)
→作用域限定符:"::"
作用是说明这个函数是属于哪个类的
原型 : 返回值类型 类名 :: 方法名(参数列表)
比如: void Student::display();
说明 : 如果一个函数没有满足以上的原型则会呗认为是全局函数
比如 :::display(), display()
→面向对象中的做法是 : 在类的内部声明函数,在类的外部定义函数
5 : inline函数
→ c++中规定在类内部定义的函数默认都是inline的函数,在类外部定义的函数都不是inline的函数
除非你显示的说明是inline函数
→ inline函数的优点 :节省时间
→ inline函数的做法 :当调用一个inline函数的时候,将函数的代码段复制插入到函数调用口,而
如果没有声明为inline的函数则会使流程转去代码片段直到返回(具体可以参加inline函数,在此不赘述)
6 : 成员函数的存储方式
如上图可以知道一个对象占用的大小实际上是只取决于数据成员所占的空间,而与成员函数无关!
可以使用如下的小例子来测试
class Time { public: int hour; int min; int sec ; void set(){ //代码段 } }
在main方法中可以使用sizeof(Time);看到内存大小是12
7 : 对象成员的三种引用方式
→ .引用
Student s ; s.num ;
→ 指针引用
Student s , *p; *p = &s ; p.num ;
→ 对象的引用
Student s , s2 ; s2 = s1 ; s2.num ;
8 : 类的封装性和信息隐藏
1: 头文件(主要是声明类的:成员和函数的声明) 2: cpp文件 (头文件的实现主要是函数的实现) 3 : 主函数接口 如下 |
Code :
|
p