【侯捷】C++程序设计II--兼谈对象模型

本系列相关链接
【侯捷】C++11

0. 课程目标

包含泛型编程、对象模型,共有25小节;

学习视频观看顺序如下,第一行为前序号,第二行为后序号:
14 17 22 24 18 21 16 19 20 26 35 34 28 36 25 27 33 32 30 29 31 23 37 38 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 19(1) 20 21 22 23 24

关注内容如下,其中c++11的部分见另一个博客

其中泛型编程即模板技术;
对象模型包括this指针、虚指针、虚表、虚机制、虚函数及多态;
在这里插入图片描述

1. 转换函数

1.1 operator type() const

class转换出去:
数据类型转换操作符的重载,没有返回值类型,通常末尾加const;

转换进class来:?
构造函数;

1.2 explicit

non-explicit-one-argument ctor,只有一个无缺省值的构造函数,如果不加explicit ,则可能发生自动类型转换继而调用构造函数;
如果不想允许,则需要加explicit;

2. pointer/function-like class

例如,智能指针、迭代器;
也就是必须由*操作符、->操作符;

2.1 智能指针

template<class T>
class shared_ptr{
   
public:
  T& operator*() const {
    return *px; }
  T* operator->() const {
    return px; }
  shared_ptr(T* p) : px(p) {
    *pn = 0; }
private:
  T* px;
  long* pn;
};

另外,操作符->有特殊功能,也就是会继续指下去;

2.2 迭代器

除了*操作符、->操作符,还需要设计++、–等若干操作符;

在这里插入图片描述
这里荷包蛋表示迭代器;

T& operator*() const {
    return (*node).data; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值