<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>编程 on UOG的BLOG</title>
		<link>https://uogog.github.io/tags/%E7%BC%96%E7%A8%8B/</link>
		<description>Recent content in 编程 on UOG的BLOG</description>
		<generator>Hugo</generator>
		<language>zh-cn</language>
		
		
		
		
			<lastBuildDate>Fri, 21 Aug 2026 14:51:36 +0800</lastBuildDate>
		
			<atom:link href="https://uogog.github.io/tags/%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>设计模式</title>
				<link>https://uogog.github.io/posts/design_pattern/</link>
				<pubDate>Fri, 21 Aug 2026 14:51:36 +0800</pubDate>
				<guid>https://uogog.github.io/posts/design_pattern/</guid>
				<description>&lt;h1 id=&#34;参考网站&#34;&gt;&#xA;  参考网站&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#%e5%8f%82%e8%80%83%e7%bd%91%e7%ab%99&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://refactoring.guru/store&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://refactoring.guru/store&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;分类&#34;&gt;&#xA;  分类&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#%e5%88%86%e7%b1%bb&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;所有设计模式按目的分成3种&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;行为模式：如何划分类的职责&lt;/li&gt;&#xA;&lt;li&gt;结构模式：如何用类来组成大类&lt;/li&gt;&#xA;&lt;li&gt;创造模式：如何创造新类，就是新类创造的准则&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这种分类有重叠的部分在，就是有的设计模式你说他是行为模式也行，说他是结构模式也行这种。&#xA;有个大致概念就好。&lt;/p&gt;&#xA;&lt;p&gt;A pattern isn’t just a recipe for structuring your code in a specific way. It can also communicate to other developers the problem the pattern solves.&lt;/p&gt;&#xA;&lt;p&gt;假如一个类想用多个模式，就直接在抽象类里多列几个纯虚函数就好。&#xA;prototype+Observer. 就是在subcriber那个抽象类里写clone和update两个纯虚函数。&lt;/p&gt;&#xA;&lt;p&gt;注意，抽象模式是为了大型项目开发中，人与人代码方法协作的，所以用法和写法都要懂，不要只懂怎么设计，却忘了怎么用(大部分的使用其实不用记，但有些模式的使用就是需要client配合)。&lt;/p&gt;&#xA;&lt;p&gt;有些一般原则，不一定对，但大部分是这样：要用谁就用一个成员指向相应对象。要细化谁就继承谁。e.g. facade里，要用子系统，就指向一个，要让人家（）用&lt;/p&gt;&#xA;&lt;h1 id=&#34;template-pattern&#34;&gt;&#xA;  template pattern&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#template-pattern&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;类别：行为模式（多是设计成员函数的）&#xA;模板模式: 其实就是基本的虚函数，多态的应用，加入要实现动物叫唤函数，狗对象是狗叫，猫对象猫叫。&lt;/p&gt;&#xA;&lt;h2 id=&#34;适用条件&#34;&gt;&#xA;  适用条件&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#%e9%80%82%e7%94%a8%e6%9d%a1%e4%bb%b6&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;设计时：&#xA;Use the Template Method pattern when you want to let clients extend only particular steps of an algorithm, but not the whole algorithm or its structure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>C&#43;&#43;</title>
				<link>https://uogog.github.io/posts/cpp/</link>
				<pubDate>Mon, 27 Jul 2026 15:25:39 +0800</pubDate>
				<guid>https://uogog.github.io/posts/cpp/</guid>
				<description>&lt;p&gt;默认参数只能从右到左一个一个指定&#xA;对于派生类，可以用一个基类的引用来引用这个实现多态&#xA;函数重载，要看能不能区别函数，但是const，volatile，&amp;amp;这3个不影响区别&#xA;函数模板，template只作用于下一个函数，使用时确定会用实例化和具体化&#xA;在用函数模板和函数重载时，几乎一定会出现一个函数调用能用几个定义好的函数，&#xA;这个要看最佳匹配，优先常规函数，再是提升转换，规则转换，最后用户定义的转换&#xA;在模板的使用中，有decltype这个关键字，用于自动推断类型&#xA;decltypr(A) x; // x是A的类型&#xA;decltypr(func()) x; // x是返回值的类类型&#xA;decltypr((A)) x; // x是A的引用类型&#xA;decltypr(10+1.0) x; // x是表达试的类型&#xA;还需要后置返回值&#xA;template&amp;lt;class T1,class T2&amp;gt;&#xA;auto func(T1 x,T2 y) -&amp;gt; decltype(x+y){&#xA;}&lt;/p&gt;&#xA;&lt;h2 id=&#34;名称&#34;&gt;&#xA;  名称&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#%e5%90%8d%e7%a7%b0&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;cin &amp;gt;&amp;gt;&lt;/code&gt; , &lt;code&gt;cin.get()&lt;/code&gt; , &lt;code&gt;cin.getline()&lt;/code&gt; , &lt;code&gt;getline()&lt;/code&gt; — C++ 标准输入函数&lt;/p&gt;&#xA;&lt;h2 id=&#34;概述&#34;&gt;&#xA;  概述&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#%e6%a6%82%e8%bf%b0&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;函数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th style=&#34;text-align: center&#34;&gt;返回值&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;读到的内容&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th style=&#34;text-align: center&#34;&gt;是否读走 &lt;code&gt;\n&lt;/code&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th style=&#34;text-align: center&#34;&gt;是否储存 &lt;code&gt;\n&lt;/code&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin &amp;gt;&amp;gt; var&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;跳过前导空白，读到空白前&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;—&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.get()&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一个字符（含 &lt;code&gt;\n&lt;/code&gt;）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;—&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;—&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.get(ch)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一个字符（含 &lt;code&gt;\n&lt;/code&gt;）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;—&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;—&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.get(buf, len)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一行，最多 len-1 个字符&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.get(buf, len, delim)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;读到 delim 前，最多 len-1 个字符&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.getline(buf, len)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一行，最多 len-1 个字符&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;是&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cin.getline(buf, len, delim)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;读到 delim 前，最多 len-1 个字符&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;是&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;getline(cin, str)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;一行&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;是&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;getline(cin, str, delim)&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;istream&amp;amp;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;读到 delim 前&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;&lt;strong&gt;是&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td style=&#34;text-align: center&#34;&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;istream-如何转换为-bool&#34;&gt;&#xA;  &lt;code&gt;istream&lt;/code&gt; 如何转换为 &lt;code&gt;bool&lt;/code&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#istream-%e5%a6%82%e4%bd%95%e8%bd%ac%e6%8d%a2%e4%b8%ba-bool&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;链接到标题&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;链接到标题&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;istream&lt;/code&gt; 可在 &lt;code&gt;if&lt;/code&gt; / &lt;code&gt;while&lt;/code&gt; 中直接作为条件判断，通过 &lt;code&gt;explicit operator bool()&lt;/code&gt;（C++11 起）。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
