c++
not_give_up_
这个作者很懒,什么都没留下…
展开
-
c++实现waveinopen录音功能
在Windows中提供了相应的API函数(waveIn这个族的函数)实现录音功能(具体的播放功能是使用waveOut族的函数)在使用这些函数是,一定要引入相应的头文件:#include<windows.h>#include <MMSYSTEM.H>#pragma comment(lib, "WINMM.LIB")1)、在开始录音之前,需要首先定义音频流的相关信息:使用WAVEFORMATEX结构体,设置相关的音频流信息。以下是MSDN中的定义:typedef s转载 2020-07-12 00:34:34 · 1038 阅读 · 0 评论 -
C99标准
下面这个程序有一个错误#include int main (void){long sum=0L;int count=0;printf("\nEnter the number of integers you want to sum:");scanf("%d",&count);for(int i=1; i sum +=i;printf("\nTotal转载 2017-10-29 18:30:07 · 491 阅读 · 0 评论 -
已成功连接到库却undefined reference to 错误
遇到了一个非常诡异的事情,makefile 已经写好: `cppflags= headers=-I ../../inc libs=-lpuck -L ../../lib../bin/input: input.cpp mkdir -p ../bin g++ $(cppflags) $(headers) $(libs) -o $@ $^`本来这个makefile 在转载 2017-10-29 18:25:32 · 1728 阅读 · 0 评论 -
Tortoise SVN使用方法,简易图解
版权声明:本文为博主原创文章,未经博主允许不得转载。Tortoise SVN使用方法,简易图解 刚到公司实习,为了版本控制,我公司使用SVN控制版本,在此记下SVN使用方法,仅供参考! 废话少说,上图!-------------------------------------------------------我是分割线-------转载 2017-09-06 23:04:35 · 186 阅读 · 0 评论 -
C程序编译过程浅析
前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。我现在一般都是用gcc,所以自然以GCC编译hellworld为例,简单总结如下。 hello.c源代码如下:?[Copy to clipboard]View Code C123456转载 2017-08-27 11:27:35 · 274 阅读 · 0 评论 -
C++回顾之static与单例模式
单例模式是应用最多的一种设计模式,它要求每个类有且只能有一个实例对象,所以用C++设计一个单例模式的方法如下: 1 构造函数声明为私有; 这样就保证了不能随意构造一个对象 2 将拷贝构造函数与等号运算符声明为私有,并不提供他们的实现; 即禁止对象被拷贝。 3 在类中声明一个静态的全局访问接口; 4 声明一个转载 2017-08-15 22:34:22 · 345 阅读 · 0 评论 -
单例模式的好处和缺点?为什么要用单例模式?
单例模式含义】单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。【采用单例模式动机、原因】对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工转载 2017-08-15 22:01:16 · 34268 阅读 · 4 评论 -
memset的用法
功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。[编辑本段]用 法 void *memset(void *s, int ch, unsigned n);[编辑本段]程序例 #in转载 2017-08-15 17:22:22 · 226 阅读 · 0 评论 -
new delete和malloc free的区别
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4.new可以转载 2017-08-15 14:31:13 · 260 阅读 · 0 评论 -
为什么能数组引用,但不能引用数组
C++中能不能建立数组的引用?在网上看到一篇博客写到C++中不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。 http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx 但是int a[3] ={10,20,30}; int (&b)[3] = a; 这段程序是可以执行...展开holyp转载 2017-08-15 11:39:00 · 3632 阅读 · 1 评论 -
引用的本质
代码运行环境:Windows7 32bits+VS2012。引用是C++引入的重要机制,它使原来在C中必须用指针实现的功能有了另一种实现的选择,在书写形式上更为简洁。那么引用的本质是什么,它与指针又有什么关系呢?1.引用的底层实现方式引用被称为变量的别名,它不能脱离被引用对象独立存在,这是在高级语言层面的概念和理解,并未揭示引用的实现方式。常见错误说法是“引用“自身不是转载 2017-08-15 10:54:24 · 315 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2017-08-15 09:44:43 · 137 阅读 · 0 评论 -
QT focusInEvent 事件
Qt的事件模型中提供的事件过滤功能使得一个QObject对象可以监视另一个QObject对象中的事件,通过在一个QObject对象中安装事件过滤器可以在事件到达该对象前捕获事件,从而起到监视该对象事件的效果。实现类似功能的另一种方式是通过分别继承不同的控件类,并重构各控件的事件响应函数,但若窗体中包含大量不同的控件时,每一个控件都必须重新继承,然后分别重构不同的事件函数,实现比较复杂。事件过滤转载 2017-07-19 21:26:37 · 2172 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符'\0'。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src); memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途转载 2017-08-14 10:14:57 · 170 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2017-08-14 10:08:59 · 129 阅读 · 0 评论 -
虚析构函数问题:为什么要将基类的的析构函数设成虚的?
某CSDN网友问:class A { public: ~A() { cout } };class B:public A { public: virtual ~B() { cout } };class C:public B { public: ~C转载 2017-08-14 09:46:49 · 176 阅读 · 0 评论 -
inline函数的一些总结
我们看下面的函数,函数体中只有一行语句: double Average(double total, int number){ return total/number; } 定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数转载 2017-08-14 09:06:10 · 256 阅读 · 0 评论 -
如何打开不知道文件类型的文件
大家有可能会经常碰到一些无扩展名的文件须要打开,却不知道从何下手,怎么办呢? 这些文件可能是其后缀名被删除了,或者只能用专门程序打开(如Outlook的“收件箱.dbx”),但这些程序被损坏了,是不是没有办法了?其实这类问题完全可以用记事本“强行”打开。 比如用记事本以“*.*”为类型打开一个没有后缀名的文件,在一片乱码的第一行看到了“BM”字样,由此我就知道这是一个Bmp文件了。其实转载 2017-10-29 18:33:58 · 9552 阅读 · 0 评论 -
常用的文件类型有哪些?有什么类型,属于什么文件?
-- 常用文件扩展名解释 A 对象代码库文件 AAM Authorware shocked文件 AAS Authorware shocked包 ABF Adobe二进制屏幕字体 ABK CorelDRAW自动备份文件 ABS 该类文件有时用于指示一个摘要(就像在一篇有关科学方面的文章的一个摘要或概要,取自abstract) ACE Ace压缩档案格式 ACL CorelDRAW 6键盘快捷键文件转载 2017-10-29 18:39:54 · 19661 阅读 · 1 评论 -
关于Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的解决方法
在使用vs的过程中,有些工程可以编译通过正常运行,但是在下断点调试时会显示"当前不会命中断点.还没有为该文档家在任何符号". 如下图1图1这并不是vs的bug,而是在设置选项中没有在对应的位置设置调试信息.可以按照下列方法打开断点:1.右键项目->属性->配置属性->C/C++->常规->调试信息格式,这里设置为 图2转载 2017-10-29 18:49:38 · 1273 阅读 · 0 评论 -
typedef void (*funcptr)(void)的含义
fun a;//等价于void (*a)();这样声明起来就方便多了void (*a)();表示a是个指针,指向一个不带参数、返回值为空的函数定义一个函数指针类型。比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { pri...转载 2018-06-25 13:22:17 · 794 阅读 · 0 评论 -
为什么一般要在入口参数前面写上const
做个比喻-----------------------------------------------------------------------------------------------------------const好比windows下面的只读的概念。也就说这个问题你只能读取它,查看它,但不能修改也不能删除。=====================================...转载 2018-05-30 17:10:21 · 970 阅读 · 0 评论 -
C++中struct和class的区别
一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 最本质的一个区别就是默认的访问控制,体现在两个方面: 1)默认的继承访问权限。struct...转载 2018-05-18 10:44:47 · 496 阅读 · 0 评论 -
static
static生命周期2011-07-15 16:01静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变转载 2017-11-27 21:08:20 · 523 阅读 · 0 评论 -
配置文件保存在exe所在目录
论坛题目:一个C++程序,main函数中用ifstream打不开txt文件,我将sales_data.txt文件存放在跟源码一样的目录下#include #include #include #include using namespace std;class Sales_data{public:friend istream &read(istream转载 2017-12-14 23:45:49 · 955 阅读 · 0 评论 -
system(“pause”)
论坛题目#include#includeusing namespace std;class Student{ private: int num; string name; char sex; public: Student(int n,string nam,char s) //带有参数的构造函数 { cout转载 2017-12-14 23:40:32 · 307 阅读 · 0 评论 -
获取某个目录下所有的文件
论坛题目:vector files; //获取该路径下的所有文件 getFiles(filePath, files ); char str[30]; int size = files.size(); for (int i = 0;i { coutstring.c_str是Borland封转载 2017-12-14 23:23:02 · 489 阅读 · 0 评论 -
读文件
论坛 题目:有一个比较大的文件,分批读取,每次读取一批存入内存(每一批的长度是固定的)。问题是,读完一批,需要关闭文件,从而让其他的函数写这个文件。再打开它时,能定位到下一批吗?请教大家,谢谢!用锁#include #include #include #include #include #include #include #include v转载 2017-12-14 23:20:45 · 183 阅读 · 0 评论 -
拷贝构造函数的调用
输出结果:YyyyXyZ#includeusing namespace std;class Y{public: Y(){cout Y(const Y&_Y){cout};class X{public: X(Y _b):b(_b){coutprotected: Y b;};class Z:public X原创 2017-12-14 23:09:06 · 199 阅读 · 0 评论 -
命名空间
一、为什么使用命名空间 一个大型的工程往往是由若干个人独立完成的,不同的人分别完成不同的部分,最后再组合成一个完整的程序。由于各个头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数,这样在程序中就会出现名字冲突。不仅如此,有可能我们自己定义的名字会与C++库中的名字发生冲突。 名字冲突就是在同一个作用域中有两个或多个同名的实体,为了解决命名冲突 ,转载 2017-12-13 23:41:56 · 201 阅读 · 0 评论 -
c/c++实现将cef的一堆dll单独放在一个文件夹,与程序exe目录区分开
Adds a directory to the search path used to locate DLLs for the application.BOOL WINAPI SetDllDirectory( __in LPCTSTR lpPathName);ParameterslpPathName The directory to be a转载 2017-12-13 22:58:32 · 1476 阅读 · 0 评论 -
C++中的默认函数与default和delete用法
一、类中的默认函数a.类中默认的成员函数1.默认构造函数2.默认析构函数3.拷贝构造函数4.拷贝赋值函数5.移动构造函数6.移动拷贝函数b.类中自定义的操作符函数1.operator2.operator&3.operator&&4.operator*5.operator->6.opera转载 2017-12-13 21:47:19 · 623 阅读 · 0 评论 -
测试栈空间的大小
堆栈比如局部变量是保存在栈空间中的,今天突然在想栈的上限是多大呢,什么时候才会栈溢出?ulimit 命令linux下使用ulimit 命令可以查看系统的很多上限值。ulimit -a 查看所有ulimit -s 查看栈空间的大小可以看到系统设置栈的上限是8M测试现在我们写个程序测试一下两种方法:1、转载 2017-12-12 21:38:56 · 4692 阅读 · 0 评论 -
sizeof(数组名)和sizeof(指针)
在做这道题时:32位环境下,int *p=new int[10];请问sizeof(p)的值为()A、4 B、10 C、40 D、8我以为正确答案为C,int类型为32位,占四个字节,10个自然就是40了,结果正确答案为A,只是指针p占的空间。因此写段代码测试一下:转载 2017-12-11 23:19:49 · 381 阅读 · 0 评论 -
voaltile
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我转载 2017-11-28 22:36:11 · 408 阅读 · 0 评论 -
C++中括号()操作符的重载举例及解析
C++项目中,经常会遇到使用重载()操作符的地方,请看下面一个例子: view plain#include using namespace std; class Clastype { public: Clastype(int a) { co转载 2017-07-28 16:15:23 · 556 阅读 · 0 评论 -
虚函数在子类和父类中的内存布局
C++类对象内存结构 转自:http://blog.csdn.NET/jimmy54/article/details/5418766http://blog.163.com/yql_bl/blog/static/84785169200811307757344/ 首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数转载 2017-08-20 10:45:13 · 782 阅读 · 0 评论 -
虚函数
今天想明白多态,结果研究了一下虚函数表,结果苦思冥想了很久,终于在各种文章与帖子中,总结出了自己的想法。先理解早绑定(early binding)、晚绑定(late binding)。所谓early binding:On compile time,就能明确一个函数调用是对哪个对象的哪个成员函数进行的,即编译时就晓得了确定的函数地址;所谓late binding:On compile tim转载 2017-08-13 10:03:09 · 326 阅读 · 0 评论 -
c++笔试面试大汇总
1.求下面函数的返回值( 微软)int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; }假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。 2. 什么是“引用”?申明和使用“引用”转载 2017-07-19 21:16:26 · 550 阅读 · 0 评论 -
C++拷贝构造函数详解
版权声明:本文为博主原创文章,未经博主允许不得转载。一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。转载 2017-07-19 21:10:21 · 228 阅读 · 0 评论