C++程序设计兼谈对象模型
发如雪-ty
一个工作多年的程序员,一直从事C++开发方面的工作,曾有幸在安防行业深耕4年,并有幸在工业检测行业工作至今已有4年,主要负责系统软件的设计与开发,个人编程的信仰:不要盲目学习酷炫的东西,最重要的依然是内功。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++程序设计兼谈对象模型-09-浅谈const
const放在成员函数定义小括号的后面,用来修饰这个成员函数。表示这个成员函数不能改变class的data。当两个版本同时存在的时候,const object只能调用const版本,non-const object只能调用non-const版本。常量对象是不可以调用非常量函数的,非常量对象可以调用常量函数。...原创 2021-09-13 21:23:45 · 112 阅读 · 0 评论 -
C++程序设计兼谈对象模型-08-Delegation
用指针指向调用的class 也将任务委托过去通过指针 叫 by reference 没有 by pointer的叫法注意右上角符号 的空心,代表指针没那么实在,只有用到的时候才会调用,因此生命周期不一致左右两部分 的设计模式叫Handle/Body!非常有名,因为增加了Body的弹性,而Handle面向用户看不出来变化,也叫做编译防火墙!!很牛的样子这里Body在做“引用计算”,看左下角的具体过程,有三个共享“hello”字符串...原创 2021-09-12 15:06:38 · 208 阅读 · 0 评论 -
C++程序设计兼谈对象模型-06-Composition
私有继承其实是一种组合关系,确切的说,是一种组合关系中的is-imlemented-in-terms-of关系,根据某物实现。一般来说优先使用组合关系,只有在一些比较特殊的情况和必要的情况下,比如牵扯一些protected成员、private成员,虚函数等。才考虑用private继承,实现组合关系。...原创 2021-09-12 12:18:44 · 190 阅读 · 0 评论 -
C++程序设计兼谈对象模型-05-reference
原创 2021-09-12 11:42:14 · 130 阅读 · 0 评论 -
C++程序设计兼谈对象模型-04-variadic template
#include <iostream>#include <bitset>using namespace std;//1.第一步:用来终止递归void print1() {};//2.第二步template <typename T, typename... Types>void print1(const T& firstArg, const Types&... args){ cout << firstArg <<原创 2021-09-11 23:40:39 · 152 阅读 · 0 评论 -
C++程序设计兼谈对象模型-03-pointer-like classes
一、pointer-like classes, 关于智能指针一个C++的class,做出来后,可能会像两种东西。a.所产生出来的对象像一个指针。所以叫做pointer-like classes.b.所产生出来的对象像一个函数,有点特别哦。为何设计一个类产生的对象要像一个指针,因为你想要它做比指针更多的事情,所以通常这样做出来的东西,又叫做智能指针。有如下代码:#pragma onceclass share_ptr{public: T& operator*() const原创 2021-09-09 23:54:17 · 270 阅读 · 0 评论 -
C++程序设计兼谈对象模型-02-non-explicit one argument constructor
有如下代码:#include <iostream>using namespace std;class Fraction{public: Fraction(int num, int den = 1) :m_numerator(num), m_denominator(den) { cout << "构造函数被调用" << endl; } ~Fraction() { cout << "析构函数被调用" << endl; }原创 2021-09-08 23:45:34 · 251 阅读 · 0 评论 -
C++程序设计兼谈对象模型-01-conversion function
设计一个类Fraction表示分数,其中包含分子和分母。我们希望它能自动转换为double类型,并参与运算。下面是完整代码: #include <iostream>using namespace std;class Fraction{public: Fraction(int num, int den = 1) :m_numerator(num), m_denominator(den) { } //转换函数 operator double() const { ret原创 2021-09-08 22:59:18 · 207 阅读 · 0 评论
分享