![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 74
self-motivation
专注LINUX系统与性能分析优化
展开
-
模板元编程实例---如何设计通用的几何库
模板元编程实例—如何设计通用的几何库 设计原理 假设你需要使用c++程序来计算两点间的距离.你可能会这样做: 先定义一个struct: struct mypoint { double x, y; }; 然后定义一个包含计算算法的函数: double distance(mypoint const& a, mypoint const& b) { double dx = a.x - b.x; double dy = a.y - b.y; return sq原创 2022-02-27 11:57:09 · 807 阅读 · 0 评论 -
C++动态创建及工厂模式的模拟
#ifndef _FS_H #define _FS_H #pragma once #include #include #include using namespace std; typedef void* (*CreateClass)(void); /*@类工厂,通过一个MAP成员来实现类名与类的实例化对象函数的映射 * @向外部提供一个接口函数,通原创 2012-02-20 22:41:52 · 3379 阅读 · 1 评论 -
STL学习笔记一:模版类属的特殊化处理.
C++模版中的类属参数可以是任何类型,与JAVA中的泛型不同,是一种无约束类属类,即实际参数的各个类型不要求有共同的祖先类。而JAVA中的泛型定义,可以指定类属参数必须实现了某个接口。 因此,C++中定义了一个模版,实际的类属参数可以是任何类型,模版类属中的代码也可以复用。但是如果我们想针对不同的类属参数,做特殊化的处理,该如何定义呢。下面 就是对模版的类属参数作特殊处理的例子: /原创 2012-02-20 23:42:57 · 894 阅读 · 0 评论 -
STL学习笔记二:模版中的几个问题
1.模版函数 #include using namespace std; template void print(T prt) { cout } int main() { char a = 'A'; print(a); return 0; } 2.使用前一个模版参数限定后一个模版参数,试说出下面程序的结果。 #原创 2012-02-21 22:32:39 · 700 阅读 · 0 评论 -
C++:静态存储区,堆,栈区别
学习c++如果不了解内存分配是一件非常可悲的事情。而且,可以这样讲,一个C++程序员无法掌握内存、无法了解内存,是不能够成为一个合格的C++程序员的。 一、内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它转载 2012-03-03 22:31:23 · 904 阅读 · 0 评论 -
C++模拟java中的thread类
用过JAVA的人都知道Thread类,这个类可以创建一个线程,并执行一个Runnable对象。其实这个类也是对相关平台线程函数的封装。用C++模拟JAVA中的Thread类,线程函数基于POSIX标准.这个还相当简单,以后准备逐渐完善,开成一个posix标准的C++线程池。废话少说,直接贴代码: #include #include #include using原创 2012-06-05 10:29:43 · 1865 阅读 · 0 评论 -
C++中如何实现类似JAVA中的反射
JAVA程序员都知道,JAVA支持反射,也就是运行期间动态识别和创建对象的能力。在实际生产中,可以通过配置文件读取一个类名,然后动态产生相应的对象。具有 很大的灵活性和扩展性。 string name = getNameFromFile(); cObject p = class.ForName(name); 其实,本质上反射的实现是对内存的操控而已。C++语言本身虽不支持反射,原创 2012-08-01 10:36:27 · 5611 阅读 · 4 评论 -
C++---------用友元实现数据隐藏
有时候,我们提供给第三方的C++接口,不希望暴露类的私有数据成员,此时可以这样实现。 interface.h class B; class A { private: B *pb; public: A(); void getAge(); void setAge(); } interface.cpp原创 2015-01-27 21:06:54 · 1471 阅读 · 0 评论 -
c++编程思想(一)-------存取控制是编译器行为
c++有三种存取访问控制权限,private,protected,public.三种权限的含义大家都应该知道。我在这里想说的是,里说这是一种编译器行为,编译结束后这些存取控制信息都会消失。也就是说,这些信息对链接器而言是透明的。所以我用下面的方式做了试验,证实了这个结论。 1.h class A { private: int a; public: A(); ~A()原创 2015-01-23 20:54:59 · 837 阅读 · 0 评论