cpp_05 C++中的类和结构体
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++中结构体和类 C++中结构体和类
C++中类与结构的唯一区别: C++中类与结构的唯一区别: 中类与结构的唯一区别
类(class)定义中默认情况下的成员访 (class)定义中默认情况下的成员访 问级别是private private。 问级别是private。
结构(struct)定义中默认情况下的成员 结构(struct)定义中默认情况下的成员 (struct) 访问级别是public public。 访问级别是public。
struct STime{ int hour; int min; int sec; }; class CTime{ int hour; int min; int sec; }; int main(int argc, char * argv[]){ STime stm; CTime ctm; stm.hour = 12; //OK 默认 默认public stm.min = 13; //OK 默认 默认public stm.sec = 14; //OK 默认 默认public ctm.hour = 12; //ERROR 默认 默认private ctm.min = 13; //ERROR 默认 默认private ctm.sec = 14; //ERROR 默认 默认private return 0;}
嵌套类
可以在类的内部定义另一个类或结构体 可以在类的内部定义另一个类或结构体 ::” 通过外层类名的作用域操作符 “:: 引 :: 用内部类(后面STL STL的迭代器会遇到这种 用内部类(后面STL的迭代器会遇到这种 情况) 情况) 可以将外层类理解为一个命名空间 嵌套类也收访问级别限制
#include <iostream> using namespace std; class Init { public: class app{ public: void set_app_val(int x); int get_app_val(); private: int app_val; }; private: int Init_val; }; void Init::app::set_app_val(int x){ app_val = x; } int Init::app::get_app_val(){ return app_val; }
封装
数据 + 函数 + 访问控制 屏蔽变化 设计模式中的依赖倒置原则: (设计模式中的依赖倒置原则: 高层和 底层都要依赖接口(或协议) 底层都要依赖接口(或协议)互相之间不 要有依赖) 要有依赖) 类的作用域, 类的作用域,将成员函数定义在类的声 明外面
类的作用域
一个类的所有成员位于这个类的作用域内, 一个类的所有成员位于这个类的作用域内, 访问它们必须要通过此类或此类的对象 类的作用域是类定义和类成员的定义范围 在类的作用域内,一个类的成员函数对同一 在类的作用域内, 类的数据成员具有无限制的访问权
Private
——不可以在外部通过对象或指针、引用访问 不可以在外部通过对象或指针、 不可以在外部通过对象或指针
Protected
——不可以在外部通过对象或指针、引用访问 不可以在外部通过对象或指针、 不可以在外部通过对象或指针
类和对象
类是对象结构的说明, 而类的变量,就是对象。 类是对象结构的说明, 而类的变量,就是对象。 class A{…}; A obj; 此处定义了A类的一个对象,对象名为obj, 此处定义了A类的一个对象,对象名为obj,是在栈 obj 中分配的内存。 中分配的内存。 对于类的数据成员,类的每个对象都有一份独立的 对于类的数据成员, 拷贝;而对于类的函数成员, 拷贝;而对于类的函数成员,所有变量都共享一份 成员函数的代码。 成员函数的代码。
本章目标
类和结构的区别 类和对象的关系 对象的生命周期 封装
什么是类?
C++封装的基本单元(数据+函数) C++封装的基本单元(数据+函数) 封装的基本单元 面向对象程序设计的基础 类的成员有访问级别的控制 (public、protected、private) 、 、
class Person{ public: void setValue(char *p, int _age, int _weight){ strcpy( this->name, p); age = _age; weight = _weight; } //函数成员 函数成员 void info(){ cout << name << age << weight << endl; } private: char name[16]; //数据成员 数据成员 int age; //数据成员 数据成员 int weight; //数据成员 数据成员 }; //注意:类的定义最后要加 注意: 注意 类的定义最后要加”;” int main(int argc, char *argv[]){ Person man; man.setValue(“Pitter”, 23, 70); man.info(); return 0; }
嵌套类
int main() { Init::app obj1; obj1.set_app_val(12); cout << obj1.get_app_val() << endl; return 0; }
阶段总结:
成员变量 成员函数 访问控制
阶段练习:
对象和类的联系和区别? 类中访问控制关键字有哪几个, 分别有什么意 义? 封装的优点是?
Baidu Nhomakorabea员函数
声明和定义 如何调用? 对象、引用、指针) 如何调用?(对象、引用、指针) 成员函数重载. 成员函数重载. 在类定义的内部, 在类定义的内部,成员函数可以访问任何 其它成员函数和成员变量. 其它成员函数和成员变量. 隐含this this指针 隐含this指针
访问控制
public
——可以在外部通过对象或指针、引用访问 可以在外部通过对象或指针、 可以在外部通过对象或指针