侯捷面向对象高级编程(二)

侯捷面向对象高级编程(二)

转换函数

image-20210717081420569

  • 转换函数没有返回值,返回值就是double即函数名,不需要自己写
  • 因为转换函数一般不会改变其中内容,所以要加const限定

image-20210717110659284

  • 两条路都可以走,就回产生歧义,报错

image-20210717111125710

  • explict禁止自动转换,于是4无法转转换为Fraction

pointer-like cliasses

image-20210717112102500

  • ->作用之后还能继续作用不会消耗掉
  • *sp中的*作用于sp上后返回*px,而->作用后不会消失

image-20210717112713061

function-like classes,仿函数

image-20210717113348179

image-20210717113359183

image-20210717113407978

namespace 命名空间

image-20210717114338669

放在不同命名空间,让彼此没有关联

class template

image-20210717114504467

function template

image-20210717114614047

member template

image-20210717114922738

即使T1,T2确定了,U1,U2也可以变

image-20210717115318473

可以嵌套,但是p.first必须能给first赋值,即U1,U2是T1,T2的子类

再举一个例子,同理

image-20210717115557613

specialization 模板特化

image-20210717115743306

我的理解就是,对不同的类型,采取有不同的行为

partial specialization 模板偏特化

image-20210717120108789

事先绑定一个参数

image-20210717120325286

  • 如果不使用指针就用上面的情况 obj1
  • 如果使用指针就用右下的情况 obj2

数量不定的模板参数

image-20210717121044392

print是递归调用,能打印出全部元素

void print() // 最后一个元素打印时调用
{}
template<typename T ,typename... Types>
void print(const T& first,const Types&... args)
{std::cout << first<<std::endl;print(args...);
}
int main()
{print(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
}

虚函数,虚指针

image-20210717122643409

一种理解:继承中函数继承的是调用权

const

image-20210717124511792

函数后面加const只用于成语函数

image-20210717124519464

COW: copy on write

image-20210717130527254

image-20210717130637939

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拒绝了对对象 'sp_sdidebug'(数据库 'master',所有者 'dbo')的 EXECUTE 权限

在.net中调用时出现“拒绝了对对象 sp_sdidebug&#xff08;数据库 master&#xff0c;所有者 dbo&#xff09;的 EXECUTE 权限”的错误的解决办法。该问题是我在用指定的URL启动项目后&#xff0c;再“附加进程”后运行程序时出现的。该问题主要是.net2005的调试机制引起的&am…

ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证

在前面的创建专辑与编辑专辑的表单中存在一个问题&#xff1a;我们没有进行任何验证。字段的内容可以不输入&#xff0c;或者在价格的字段中输入一些字符&#xff0c;在执行程序的时候&#xff0c;这些错误会导致数据库保存过程中出现错误&#xff0c;我们将会看到来自数据库的…

人生的12个经典领悟

1、父子二人经过五星级饭店门口&#xff0c;看到一辆十分豪华的进口轿车。儿子不屑地对他的父亲说&#xff1a;「坐这种车的人&#xff0c;肚子里一定没有学问&#xff01;」 父亲则轻描淡写地回答&#xff1a;「说这种话的人&#xff0c;口袋里一定没有钱&#xff01;」 2…

poll聊天室程序

poll聊天室程序 客户端: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include &l…

EF Code First学习笔记:数据库创建(转)

控制数据库的位置 默认情况下&#xff0c;数据库是创建在localhost\SQLEXPRESS服务器上&#xff0c;并且默认的数据库名为命名空间context类名&#xff0c;例如我们前面的BreakAway.BreakAwayContext。 有几种方法可以改变这种默认约定。 利用配置文件 在配置文件中新加一个连接…

ASP.NET 2.0+Atlas编写鼠标拖放程序

作者&#xff1a;朱先忠编译摘要 本文将详细探讨Atlas中的声明性编程与强制性编程之间的关系&#xff0c;及如何用之在一个web客户端实现拖放功能。下图为本文相应示例程序运行结果快照。运行结果一. 简介  本文旨在帮助读者理 解微软的Atlas技术的某些方面的工作原理。Atlas…

疑难杂症--由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

在巡检数据库时发现&#xff0c;数据库备份作业失败&#xff0c;查看错误日志发现以下提示&#xff1a; 已以用户 WIN2008-JH122\SYSTEM 的身份执行。 Microsoft (R) SQL Server 执行包实用工具 Version 10.0.4000.0 for 64-bit 版权所有 (C) Microsoft Corp 1984-2005。保留…

call_once/once_flag的使用

call_once/once_flag的使用 保证在多线程环境中某个函数仅仅被调用一次,可以使用std::call_once函数,并且需要一个入参once_flag类型的入参 #include<iostream> #include <string> #include <tuple> #include <mutex> #include <thread> #incl…

算法基础系列之三:螺旋形矩阵

如何打印出如下这样的螺旋形的矩阵&#xff1a; 1 2 3 8 9 4 7 6 5 方法一&#xff1a; static void SpiralMatrix(int count) { int[,] iarray new int[count, count]; for (int i 0; i < count; i) { for (int j 0; j < count; j) { iarray[i, j] 0…

C++11异步操作

C11异步操作 C 11 提供了异步操作相关的类,主要有std::future std::promise std::package_task std::future作为异步结果的传输通道,获取线程函数的返回值; std::promise用来包装一个值,将数据和std::future绑定; std::package用来包装一个对象,将数据和future绑定起来,以方…

GDI对象的初始化

GDI对象的初始化 一、GR_GraphicsFactory对象的初始化在XAP_App对象的构造函数中创建GR_GraphicsFactory对象。在XAP_Win32App构造函数中&#xff0c;调用GR_GraphicsFactory对象的registerClass函数初始化m_vAllocators、m_vDescriptors、m_vClassIds集合成员变量&#xff0c;…

存储过程从入门到熟练(多个存储过程完整实例及调用方法)_AX

①为什么要使用存储过程?因为它比SQL语句执行快.②存储过程是什么?把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点)③来一个最简单的存储过程CREATE PROCEDURE dbo.testProcedure_AXASselect userID from USERS order by userid desc注:dbo.testPro…

Abiword中字符操作

Abiword中字符操作 一、关于不同字符的宏定义 typedef gunichar UT_UCS4Char;typedef guint16 UT_UCS2Char;typedef UT_UCS4Char UT_UCSChar; /* Unicode */ typedef guint32 gunichar;typedef guint16 gunichar2; AbiWord is now fully converted to using 32-bi…

C++ 11线程池 ThreadPool

线程池 ThreadPool 半同步半异步线程池(简略版)C11实现,详细解析 同步队列 SynchronousQueue.hpp #include <list> #include <mutex> #include <thread> #include <condition_variable> #include <iostream> using namespace std;template&l…

ITPro Magazine2006年第6期发布

下载地址[url]http://www.cnfan.net/magazine/itpromagazine200606.rar[/url]主题企划Windows Fundamentals For Legacy PCs深度解析&#xff1a;Windows Vista RC1的五大特性系统应用Win2003平台php环境架设Xen3安装及使用(On Fedora core5)ISA Server 2004 ***应用网络与安全…