news 2026/6/24 22:37:45

类的成员类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
类的成员类型

1、成员类型是定义在类内部的类型,包括:typedef 别名;using 别名;enum 枚举;class 嵌套类;struct 嵌套结构体。

#include <vector> #include <list> #include <string> using namespace std; class MyClass { enum Status { Idle, Running, Stopped }; //typedef成员类型别名 typedef vector<int> IntVector; //using成员类型别名 using StringList = list<string>; //嵌套类 class NestedClass { public: void nestedMethod() {} }; //嵌套结构体 struct Point { int x; int y; }; void useMemberTypes() { Status status = Running; IntVector vec; NestedClass nestedClass; Point p = { 1,2 }; } private: Status currentStatus; Point position; };

2、在类外使用成员类型时,需要作用域运算符::,而且也遵循访问权限,在类外只能访问public的成员类型,子类可以访问父类的protected成员类型。

class Database { public: enum ConnetStatus { Disconnected, Connecting, Connected, Error }; class Query { public: enum Result {Succ,Failure,Timeout}; }; }; int main() { Database::ConnetStatus connectStatus = Database::ConnetStatus::Connected; Database::Query::Result result = Database::Query::Result::Succ; return 0; }

3、为什么需要成员类型?

1、封装和命名空间管理,放在类内部的的成员类型,避免了全局命名冲突;

2、在类内部的成员类型也有访问权限,私有访问权限对实现细节进行隐藏;

3、模板类中的类型别名,在STL中经常使用,type_traits

template<typename T> class Container { public: using value_type = T; using reference_type = T&; using const_reference = const T&; using size_type = std::size_t; class iterator//嵌套的迭代器类型 { //... }; void push_back(const value_type& value); }; //使用 Container<int>::value_type x = 42;

总结:

1、成员类型属于类,他们是类的一部分,不是全局的;

2、访问需要作用域:外部使用时,需要加ClassName::

3、访问权限:和其他成员一样,有public/protected/private控制

4、主要用途:组织相关类型;避免命名冲突;隐藏实现细节;提供模板元编程支持;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 23:07:35

Aspera传输相比FTP有哪些显著优势?

在日常工作和跨国协作中&#xff0c;大规模数据传输是许多企业与团队面临的关键挑战。传统的FTP&#xff08;文件传输协议&#xff09;长期以来被广泛使用&#xff0c;但随着数据量的爆发式增长及对传输效率要求的提升&#xff0c;其局限性日益凸显。IBM Aspera作为高速传输技术…

作者头像 李华
网站建设 2026/6/18 9:39:13

学校想做云桌面的话需要注意什么?

在数字化转型的浪潮中&#xff0c;云桌面凭借灵活访问、集中管理、数据安全等优势&#xff0c;正成为政府、医疗、金融、能源等行业信息化建设的重要方向。然而&#xff0c;构建云桌面体系并非简单的设备上云&#xff0c;其中涉及架构设计、技术选型、安全合规、运维管理等多重…

作者头像 李华
网站建设 2026/6/20 9:35:00

数字孪生技术驱动现代水利智能创新建设

2023年&#xff0c;广东北江流域通过数字孪生平台精准预演洪峰轨迹&#xff0c;提前72小时启动分洪预案&#xff0c;避免经济损失超10亿元&#xff1b;2024年&#xff0c;某水利利用数字孪生引擎模拟村落淹没场景&#xff0c;为人员转移提供分钟级决策支持……这些案例背后&…

作者头像 李华
网站建设 2026/6/17 4:22:13

特征值类重大升级

这个 特征值主信息类 std::variant 载体方案&#xff0c;在保持原有架构优势的同时&#xff0c;成功实现了值语义、内嵌存储、高性能访问、易序列化&#xff0c;而且完全兼容全局唯一、去重、共享、融合、索引等核心能力。 是一次成功的架构升级。 为什么这次彻底没问题了&…

作者头像 李华
网站建设 2026/6/21 11:42:26

【MyBatis】MyBatis操作动态sql MyBatisGenerator

文章目录mybatis进阶&#xff08;动态sql&#xff09;一、<if>标签二、<trim>标签三、<where>标签四、<set>标签五、<foreach>标签六、<include>标签MyBatisGenerator1. 引入插件2. 添加 generatorConfig.xml 并修改3. 生成文件mybatis进阶…

作者头像 李华
网站建设 2026/6/19 2:39:52

期末考试4

文章目录一、基础概念1.什么是方法的重写&#xff1f;2.什么是接口&#xff1f;3.什么是抽象类&#xff1f;什么是抽象方法&#xff1f;4.常见异常类及继承关系5.常用API类整理&#xff08;表格&#xff09;6.集合整理&#xff08;List&#xff0c;ArrayList&#xff0c;Linked…

作者头像 李华