c++类模板与其他
static static的成员不再单独属于一个对象,他是单独的保存在内存的某个地址,也就只有一份。所以在设计程序的时候要看这个东西是不是只需要一份。 static函数和一般的函数一样,在内存中只有一份。静态函数没有this指针,不能像一般成员一样去访问和存取一般的成员数据,他只能处理静态的对象,静态的成员。 如果class中有静态的数据,一定要在class之外进行初始化。
class Account{
public:
static double m_rate;//只是声明而已
static void set_rate(const double& x) { m_rate = x;}
};
double Account::m_rate = 8.0;//定义,设初值,使这个变量获得内存。
//静态数据必须在类的body之外写这条,给不给初值都可以。
int main(){
Account::set_rate(5.0);//通过class name 调用
Account a;
a.set_rate(7.0); //通过object调用
}
静态成员函数的调用方法有两种: 1、通过对象来调用 2、通过class name调用 一般函数通过对象来调用函数,对象的地址会作为this指针传进函数,static函数就不会这样操作。


Singleton设计模式 诉求:设计的class,只希望产生一个对象 外界取得唯一的a,然后调用别的函数对a进行操作: A::getInstance.setup();
class A{
public:
static A& getInstance { return a; }; //外界取得唯一的a,对外的唯一窗口
setup() {...}
private:
A();
A(const A& rhs); //两个构造函数
static A a; //不想让别人创建a,所以把构造函数放入private
...
};
问题:外界若不调用a,但a仍存在于内存中 优化措施:把静态的自己放入对外的唯一接口中(即getInstance函数中) 好处:只有当被调用时,a才会被创建,离开函数之后,a还在(因为是静态的)
class A{
public:
static A& getInstance { return a; };
setup() {...}
private:
A();
A(const A& rhs);
...
};
A& A::getInstance()
{
static A a;
return a;
}
getInstance()仍然是对外的唯一窗口 但唯一的对象放在getInstance里,写出这样那么如果没有人使用那么a就不存在。只有当人调用getInstance(),a才会被创建。
cout源码剖析

模板 class template 类模板 复数的实部虚部可能是double,int等等,这部分用T表现
template<typename T>// 目前T还没绑定
class complex
{
public:
complex(T r = 0, T i = 0) : re(r), im(i) { }
complex operator += (const complex&);
T real() const { return re; }
T imag() const { return im; }
private:
T re,im;
friend complex& __doapl (complex* , complex&);
}
{
complex<double> c1(2.5,1.5); //将class中的所有T用double代替
complex<int>(2,1); //将class中的所有T用int代替
}
typename可以用T来替代 类模板必须要明确指出替代的typename是什么 如上图所示调用,c1传入的类型会把T全部替换为double,c2传入的类型会把T全部替换成int
function template 函数模板 例:取最小值函数,可以应用于很多个类中

class类型也可以用T来代替 函数模板不必明确指出class类型是什么,编译器会做实参推导 因为比大小都使用(<)符号,设计比大小的方法不在<身上,而是在参与比大小的对象的class里
命名空间namespace

namespace 后可以命名一个名称将所有东西都放到名称里,这样就讲有所得东西都包装到命名空间里。
using directive等于将std全部打开,把所有东西都取出来
using declaration相当于从std中拿一个东西
c++类模板与其他的更多相关文章
- C++STL - 类模板
类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板 1.定义 template<typename 类型形参1, typename 类型形参2,...&g ...
- C++ 类模板的使用
从事C++挺久了,在前段时看书时,发现高手,都是在写模板无,泛型编程,顿感差距.自己连模板都没有写,于是就小小的研究了下模板的用法. 模板简而言之就是对某此对象的相同方法,或处理方式,进行归纳,总结, ...
- Xcode6中如何使用自定义的类模板
说到IOS类的模板,有些人感觉很陌生,但是只要有开发过IOS程序的人,其实都用过类的模板,只不过是用的系统自带的类的模板. 例如创建一个ClassTemplateVC继承于UIViewControll ...
- VS2013,VS2015设置类模板文件表头
一般VS的类模板文件是放在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSha ...
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
[源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...
- 类模板的static成员
下列代码可以通过编译吗?如何修改使其通过编译? template <class T> struct sum { static void foo(T op1 , T op2){ c ...
- 4.1 pair类模板
在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pai ...
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
- C++类模板
在上篇文章(C++函数模板)中,主要介绍了C++中函数模板,与函数相似,类也可以被一种或多种类型参数化.容器类就是一个具有这种特性的典型的例子, 本文地址:http://www.cnblogs.com ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
随机推荐
- 初识python: random 模块
random 顾名思义,就是取 随机数,需要导入random模块. import random 1.随机获取一个0到1之间的小数(不含首尾) print(random.random()) 2.随机获取 ...
- 在使用jjwt时在配置文件中设置过期时间,取到的结果为0的原因
在设置了过期时间后感觉没有起作用,打印日志查看了下为0,因为生成token的文件在一个公共模块中,而过期时间设置在服务模块 中的配置文件中. 原因是:没有为设置getter和setter方法 来自为知 ...
- Mysql字符串字段判断是否包含某个字符串的方法
方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%"; 方法二:find_in_set() 利用mysql 字符串函数 find_in_s ...
- Centos7安装maxscale 实现mysql的读写分离
安装依赖 yum install -y novacom-server.x86_64 libaio.x86_64 libaio-devel.x86_64 网站下载 https://downloads.m ...
- github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得
1.前言 使用 git做项目控制版本工具,当然,使用SVN也可以,但是,git让人感觉更先进一些,与GitHub结合,用起来很方便,服务端由官网控制. 而SVN分客户端和服务端,都是个人控制,因此, ...
- 微服务架构攀登之路(五)之Go-micro入门
一.go-micro入门 1. go-micro 简介 Go Micro 是一个插件化的基础框架,基于此可以构建微服务,Micro 的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了 consu ...
- 机器学习|线性回归三大评价指标实现『MAE, MSE, MAPE』(Python语言描述)
原文地址 ?传送门 对于回归预测结果,通常会有平均绝对误差.平均绝对百分比误差.均方误差等多个指标进行评价.这里,我们先介绍最常用的3个: 平均绝对误差(MAE) 就是绝对误差的平均值,它的计算公式如 ...
- 【Java常用类】String
文章目录 String String实例化的方式 方式一:通过字面量定义 方式二:new + 构造器的方式 String s = new String("abc")方式创建对象,在 ...
- fastjson字符串转JSON的$ref问题
先说结论: fastjson在把对象转换成字符串的时候,如果遇到相同的对象的时候,默认开启引用检测将相同的对象写成引用的形式. 官网文档:https://github.com/alibaba/fast ...
- 【pwn】DASCTF Sept 九月赛
[pwn]DASCTF Sept 月赛 1.hehepwn 先查看保护,栈可执行,想到shellcode 这题需要注意shellcode的写法 拖入ida中分析 一直以为iso scanf不能栈溢出, ...