c++面向对象高级编程 学习九 pointer-like classes

本文深入探讨了C++中智能指针的两种形式及其内部运作原理,特别是如何通过智能指针调用成员函数。同时,文章还讲解了迭代器的特殊功能,包括如何处理解引用和成员访问操作符,以及递增、递减和比较等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++的class设计出来有两种形式,一种像指针,一种像函数

智能指针里包含普通指针,要写 * 和 -> 的函数
在这里插入图片描述

sp->method();
//sp-> 经 T* operator*() const 函数,得到px
//由于 箭头符号(->)作用下去得到的结果会继续用箭头符号作用下去
//sp->method();即可转换为px->method();

迭代器不仅要处理 * 和 -> ,还要处理++,- -,==,!=,
在这里插入图片描述
在这里插入图片描述
. 和 -> 的区别:

  • A.B,A为对象或者结构体
  • A->B,A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针。
### Java 学习路线图 #### 前期准备 为了更好地掌握Java编程语言,建议先熟悉计算机科学的基础概念以及基本的编程逻辑。这有助于理解后续更复杂的主题[^1]。 #### 学习路线 - **基础阶段** - 掌握Java语法、面向对象编程(OOP)原则、异常处理等内容。 - 阅读并深入研究《JAVA核心技术 卷1》这样的经典教材来夯实理论根基[^4]。 - **中级阶段** - 深入探索核心APIs如集合框架(Collection Framework),输入/输出(I/O)机制等。 - 同时学习常用的设计模式及其应用场景,比如观察者模式(Observer Pattern)用于事件监听器模型中;工厂方法模式(Factory Method Pattern)实现接口创建实例化过程抽象化[^3]。 - **高级阶段** - 进一步接触并发编程、网络通信等方面的知识点。 - 开始参与开源项目实践或者自行构建小型Web应用程序以积累实际工作经验[^5]。 #### 实战训练 通过完成具体的工程项目进一步巩固所学技能,例如开发简单的电子商务平台或是社交网站等功能模块。此类活动不仅能够提高解决问题的能力,还能增强团队协作意识和技术交流水平。 --- ### C++ 学习路线图 #### 初级阶段 - 理解C++的基本语法规则,包括变量声明方式、控制结构(if...else, switch)、循环体(for loop, while loop)等; - 练习编写简单程序解决日常生活中遇到的问题,培养良好的编码习惯和风格。 #### 中级阶段 - 学会运用标准模板库(STL),熟练操作容器(container classes like vector, list)与算法(algorithms such as sort(), find()); - 对指针(pointer arithmetic & dereferencing operations)有深刻认识,并能安全有效地管理动态分配内存资源; - 探讨类(class definition and inheritance hierarchy setup)特性,尤其是虚函数(virtual functions)支持下的多态行为(polymorphism)[^6]。 #### 高级阶段 - 掌握现代C++新特性的应用,像lambda表达式(lambda expressions)、右值引用(move semantics)等高效工具; - 关注底层硬件架构细节,优化性能瓶颈部分代码段; - 参加竞赛型编程比赛(Codeforces, TopCoder etc.)锻炼快速思考能力和应对复杂问题技巧[^7]。 ```cpp // 示例:定义一个简单的类 class Point { public: int x; int y; void move(int dx, int dy); }; void Point::move(int dx, int dy){ this->x +=dx ; this->y+=dy; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值