c++语言
文章平均质量分 72
helinsen
这个作者很懒,什么都没留下…
展开
-
多态和C++多态的实现(汇总)
多态和C++多态的实现(汇总)多态概念:多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值转载 2013-04-12 11:09:15 · 455 阅读 · 0 评论 -
用ShellExecute执行cmd命令遇到的问题总结
1、如果命令中的路径包含空格,要把路径去掉头尾用双引号包含起来。例:strPath = “”D:\\\"te st\\\"test.exe;(用“\”进行字符转义)2、用变量传命令的时候,要在命令字符开始加上"/c",不然命令不会执行。例:strCommand = "/c " + "date";ShellExecute(NULL, "open", "转载 2016-01-05 19:02:30 · 12065 阅读 · 0 评论 -
左值和右值
左值和右值我们在看书的时候,经常可以看到关于 左值(L-value) 和 右值(R-value) 的概念,那么到底什么是左值,什么是右值,它们之间的区别又是在哪里呢? 通俗的讲,左值就是能够出现在赋值符号左面的东西,而右值就是那些可以出现在赋值符号右面的东西了。举个很简单的例子:a=b+100;那么这里a就是左值,b+25就是一个右值。左值和右值之间是转载 2013-12-25 15:52:14 · 459 阅读 · 0 评论 -
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法 学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所
【原创】cin、cin.get()、cin.getline()、getline()、gets()等函数的用法学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、get转载 2013-10-23 17:44:15 · 490 阅读 · 0 评论 -
+ 线程安全的单例模式
C++ 线程安全的单例模式废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重转载 2013-09-11 13:33:21 · 432 阅读 · 0 评论 -
算法书
1. CLRS 算法导论算法百科全书,只做了前面十几章的习题,便感觉受益无穷。2. Algorithms 算法概论短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发布。另有中文版名《算法概论》,我没看过转载 2013-06-18 15:40:27 · 779 阅读 · 0 评论 -
int *(*a)[3][4]
int *(*a)[3][4] 求 sizeof(a) sizeof(*a) sizeof(**a) sizeof(***a) sizeof(****a) 结果我知道,有没有人能解释下具体原因。 其中, a 是一个指向2维指针数组的指针。 *a 是转载 2013-06-17 13:59:59 · 3847 阅读 · 0 评论 -
写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值
写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);注:a++表示先运算后+1;++a表示先+1后运算(A)分解成 a = a + (a++)==> a = (a+1) + a = 9(B)分解成 a = a +转载 2013-06-17 16:30:20 · 3393 阅读 · 0 评论 -
strstr strlen strcpy函数实现
strcpy函数实现strcpy 看似是标准函数库里面最简单的函数了,谁都可以实现这个函数, 但是,并不一定谁都能实现的很好。林锐博士面试微软的时候,就做这个题目。 他也没有把这个题目完全的做对。建议你自己先动手写一个自己的,不要先看 答案。估计有 90%的人写出来的,达不到性能的要求。 标准答案是这样的: static char * strcpy(char *d转载 2013-06-17 13:54:21 · 849 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向转载 2013-06-14 17:38:37 · 359 阅读 · 0 评论 -
一个局部静态对象问题 static Cleaner cl; //延迟到这里
#include "stdafx.h"#include using namespace std;class Singleton{private: Singleton(); ~Singleton(){}; int var;public: static Singleton *instance; static Singleton *Createinstance() { if(原创 2013-06-14 12:29:35 · 413 阅读 · 0 评论 -
释放单列模式2
最近接触的一个项目要用到单件模式,我像往常一样哒哒(敲击键盘ing)一个单件模式的典型结构很快就出现在我的面前: class Singleton { public: ~Singleton(){} static Singleton* Instance() { if (_instance == NULL) { _instance = n转载 2013-06-14 11:38:35 · 466 阅读 · 0 评论 -
成员指针访问运算符号
#include "stdafx.h"#include using namespace std;class className{public: int fun(){ cout<<"1111111"<<endl;return 0;}};int (className::*ff)() = &className::fun;int main(){ className c; (c.*原创 2013-06-14 12:49:23 · 728 阅读 · 0 评论 -
释放单列
C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。C++单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,转载 2013-06-14 11:12:36 · 578 阅读 · 0 评论 -
只能在堆或栈上创建对象?
【整理】只能在堆或栈上创建对象?1. 只能在堆(heap)上创建对象/禁止产生栈(stack)对象 创建栈对象时会移动栈顶指针以“挪出”适当大小的空间, 再在这个空间上直接调用对应的构造函数以形成一个栈对象, 而当函数返回时会调用其析构函数释放这个对象, 再调整栈顶指针收回那块栈内存, 在这个过程中是不需要operator new/delete操作的, 所以将ope转载 2013-04-28 14:09:06 · 443 阅读 · 0 评论 -
c++重载、覆盖、隐藏的区别和执行方式
.c++重载、覆盖、隐藏的区别和执行方式既然说到了继承的问题,那么不妨讨论一下经常提到的重载,覆盖和隐藏4.1成员函数被重载的特征(1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 4.2“覆盖”是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类); (2)函数名字相转载 2016-03-03 14:42:34 · 341 阅读 · 0 评论