c++
文章平均质量分 57
shaolianbo
这个作者很懒,什么都没留下…
展开
-
c++编译器什么时候生成默认构造函数
C++标准中这么说:对于类X,如果没有任何用户定义的构造函数,那么就会有一个默认构造函数被暗自声明出来;这种函数一般没有什么用。。。不过实际上不是什么时候编译器都生成默认构造函数,但下面集中情况却一定会为我们生成默认构造函数:1.类A中包含一个成员是另外一个类B,如果类B定义了默认构造函数。这个时候如果类A没有定义默认构造函数,编译器会暗自生成一个默认构造函数来调用调用类B的构造函转载 2012-11-27 20:34:43 · 620 阅读 · 0 评论 -
字节对齐与sizeof
一.sizeof : 运算符,sizeof(a),在编译阶段用a占用的栈空间大小替换sizeof(a).1.class test{int n;static int m;}sizeof (test)==4!=8 因为static放在静态区而不是栈空间,所以sizeof 不于计算。2.int a=0;sizeof(a=1)==4 此原创 2013-03-04 10:50:20 · 441 阅读 · 0 评论 -
c++单态模式(不断完善中)
考虑到:1.析构、构造函数、拷贝构造函数、赋值操作的私有。2.对象句柄的初始化和析构后的清0.3.线程安全。4.异常安全。如果有网友发现还有改进的地方请指出。#ifndef SINGLETON_H_#define SINGLETON_H_#include class lock //资源管理类。{ private: pthread_mutex_t*原创 2012-12-01 10:12:27 · 434 阅读 · 0 评论 -
数组字符串问题------求数组前k小的元素,及其应用
问题:n元数组,问是否有和小于m的k元子数组比如数组{5,4,3,2,1},有和小于10的3元子数组。方法一:枚举所有k元子数组。采用回朔递归的方法。时间复杂度为N^2显然这种方法没有挖掘任何题目的条件。方法二:是否有和小于m的子数组,只有知道和最小的子数组的和是否小于m即可。(同样,如果问是否有和大于m的k元子数组,只需要求和最原创 2012-12-10 16:03:15 · 392 阅读 · 0 评论 -
数组字符串问题----数组的最长递增子数组
问题:求数组的最长递增子数组的长度。eg: 输入数组{1,-1,2,-3,4,-5,6,-7},因为最长递增子数组为1 2 4 6 ,所以返回4.方法一:显然如果能穷举所有的递增子数组(不相包含),就可以得到最长的是什么。假设有一个递增子串的集合,遍历数组的过程中维护这个集合:索引 元素 子串集合0 1 11原创 2012-12-09 15:11:10 · 512 阅读 · 0 评论 -
c++ new内幕
首先我们区分下几个容易混淆的关键词:new、operator new、placement newnew和delete操作符我们应该都用过,它们是对堆中的内存进行申请和释放,而这两个都是不能被重载的。要实现不同的内存分配行为,需要重载operator new,而不是new和delete。看如下代码:class MyClass {…};MyClass * p=new MyClass转载 2012-11-23 22:37:23 · 391 阅读 · 0 评论 -
c++4种类型转换
c++类型转换:const_cast static_cast dynamic_cast reinterpret_castconst_cast用途:将const型转化为非const型,但一般转到引用,否则也没意义。但是有些有趣的现象: const float f=1.5; float& t=const_cast(f);t=2;//f=3; 编译错误,原创 2012-12-01 21:07:47 · 339 阅读 · 0 评论 -
c++对象的异常安全
假设有个class用来表现夹带背景图案的GUI菜单。这个class希望用于多线程环境,所以它有个互斥器作为并发控制用:classPrettyMenu{ public: ... voidchangeBackgroud(std::istream& imgSrc); ... private: Mutexmutex; //互斥器转载 2012-11-30 21:38:38 · 323 阅读 · 0 评论 -
KMP字符串匹配算法
kmp核心思想:计算模式串的next数组,主串的索引在比较的过程中不回朔#ifndef KMP_H_#define KMP_H_class Kmp{ private: void getNext(char* pstr,int length,int* kmpnext); public: int calcu(char* pmain,char* pchild,int mainl原创 2012-11-29 21:55:42 · 443 阅读 · 0 评论 -
内联和宏定义
用内联取代宏:1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。文章(一)内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #d转载 2013-03-02 14:18:09 · 345 阅读 · 0 评论