![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++技术
长空飞鸟
C++,Socket,网络编程,多线程,SQL SERVER,BI,SSIS,ETL,北京
展开
-
拷贝构造函数与赋值构造函数(operator=)的区别
拷贝构造函数与赋值构造函数(operator=)的区别拷贝构造函数是创建一个不存在的对象赋值构造函数是将一个对象赋值给另一个已经存在的对象。http://wenku.baidu.com/link?url=kZ1XT52VH0NQgE2QsMbuFMzfEHM5p2WFd1p4F8G4dv3FtnN-PNAeMWKarXWsPCgW1cVfx5kTF-原创 2015-09-10 18:25:45 · 1071 阅读 · 0 评论 -
Thinking in C++: 指针数组与数组指针
前几天看过一个面试题,问指针数组与数组指针的区别,当时只知道指针数组是一个有指针组成的数组,数组指针是指向数组的一个指针,但没有深入的去研究一下,今天正好有时间,将这个问题在IDE里实际调试一下,以便更深入的理解:先看定义:指针数组: int* p[n]; []的优先级高,先与p结合成一个数组,再由int*说明这是一个整型指针数组,它有n个整数指针类型的数组元素。数组指针:原创 2013-06-27 18:59:55 · 1081 阅读 · 0 评论 -
Thinking in C++: static const (类中的编译时常量)
怎样在一个类中创建一个编译时(compile-time)常量?我们知道static的意思是:无论这个类的多少个对象被创建,static修饰的属性永远只有一个实例。用static const修饰的成员必须在定义的时候就被初始化,其他数据成员都在构造函数或者其他函数成员中被初始化。const string *stack[size];stack是一个数组,里面存储的是指针,这些指针指向原创 2013-07-13 18:41:24 · 1193 阅读 · 1 评论 -
Thinking in C++: 数组指针及数组作为函数的参数
今天我们来深入的讨论一下当数组array作为C++函数的参数的情况: 数组的标示符(identifier)不同于普通变量的标示符,它是一个左值(lvalue),你不能赋值给它,当你只是使用这个标示符不带方括号时,你得到的是这个数组的首地址。 #include #include using namespace std;int main(){int a[10];原创 2013-06-27 16:39:38 · 977 阅读 · 0 评论 -
Thinking in C++: 静态指针与指向静态类型的指针
当将const与指针一起使用的时候,一般有两种情况,const被应用到指针指向的那个东西,或者const被应用到存储在指针中的内存地址。第一种情况:pointer to const注意:const修饰符绑定到离他最近的那个东西上。const int* u; //u是一个指针,指向一个const int。即 为 (const int) (*u);也就是说u不是静态的,所以它不需要初始原创 2013-07-13 17:46:38 · 3916 阅读 · 0 评论 -
Thinking in C++: 函数的参数传递方法
C++中函数的参数传递包括:值传递、指针传递、引用传递。下面是一个从网上找到的解释这三种传递方式的一个比较好的例子:// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; //值传转载 2013-06-25 15:50:27 · 842 阅读 · 0 评论 -
每日C++:#include
#include相信学习和使用c++的同学都熟悉,而大部分的C++面试题里都会考这个问题,如果想应付笔试的话只要记住下面的说明就行了:#include "" 是先从本地目录开始寻找,然后去找系统路径。(先本地再系统)#include 其作用是在系统编译之前,将包含文件中的内容拷贝到当前文件的当前位置之后,再进行编译。如果想深入的学习,则看下面的介绍:(下面内容翻译自Th原创 2012-01-11 13:47:23 · 3438 阅读 · 1 评论 -
Thinking in C++: Type-safe linkage
本文将在本周星期日公布!原创 2013-07-09 20:32:44 · 999 阅读 · 0 评论 -
Thinking in C++: 面向对象编程要点
这几天从头看《Thinking in C++》,感觉的确是本好书,现在根据自己的理解将其中的要点进行整理,希望让它变成自己脑子里的东西。 1. 几个关键词的中英文对照abstraction 抽象composition or aggregation(组合 、聚合)inheritance继承override 覆盖polymorphism多态2. Alan Kay 总结了Smallt翻译 2013-06-18 23:15:51 · 1093 阅读 · 0 评论 -
Thinking in C++: C++中关于union、struct、class的区别
今天看CSDN首页上的一个哥们写的面试经历,其中提到的关于C++中union和struct的区别题目引起了大家很多的讨论,正好前几天刚看完这一部分的内容,现在将自己的心得总结出来给大家,希望在通过面试的同时能更深入而细致的理解C++中的复合类型(composite type)。原创 2013-07-03 14:46:38 · 1524 阅读 · 0 评论 -
Thinking in C++: Pointers to members 指向成员的指针
通常来说,一个指针(pointer)是一个存储地址的变量,你能在运行时去改变它,并且指针可以指向数据或函数。但在C++中,指向成员的指针(pointer-to-member)指向的是class或struct中的成员,但在class中并没有地址,所以指向成员的指针实际上是存储的偏移量(offset),你不能生成一个实际的地址直到你将某个特殊的对象的起始地址(starting address)与这原创 2013-07-31 14:57:29 · 1172 阅读 · 1 评论 -
C++中const在函数名前面和函数后面的区别
C++中const在函数名前面和函数后面的区别原创 2013-12-20 12:19:46 · 3416 阅读 · 0 评论 -
C++静态库与动态库
一篇讲的较透彻的文章:http://www.cnblogs.com/skynet/p/3372855.html转载 2015-03-11 16:31:03 · 525 阅读 · 0 评论 -
近期出现的C++面试题整理(附详细答案)
第一部分:简答题1. 一下C++中static_cast 和 dynamic_cast 的区别。答:static_cast 用于有比较明确定义的变换,包括不需要强制转换的变换。 dynamic_cast 适用于类型安全的向下转换,常用在继承中的父类指针向子类指针的转换。若转换成功则返回改类型的指针,若失败,则返回NULL。 Struct 和class转载 2014-03-17 18:31:48 · 1770 阅读 · 0 评论 -
将Qimage转换为QByteArray
QImage image;QByteArray ba;QBuffer buffer(&ba);buffer.open(QIODevice::WriteOnly);image.save(&buffer,"PNG");// writes image into ba in PNG format原创 2015-02-06 16:57:31 · 11225 阅读 · 0 评论 -
sizeof、内存对齐和位域的几篇文章
http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.htmlhttp://www.cnblogs.com/pure/archive/2013/04/22/3034818.htmlhttp://blog.csdn.net/wuxuguang123/article/details/7916623转载 2014-11-25 18:24:27 · 773 阅读 · 0 评论 -
C++中实现singleton(单例模式)的最简单写法
前几天看了 Java中实现singleton的写法,就想在C++中实现一下,找了很多资料,看了各个牛人写的不同版本,但最后在stack overflow上找到了一个最简单的写法,现在贴出来以供参考:class S{ public: static S& getInstance() { static S instance;原创 2014-03-04 16:50:08 · 6791 阅读 · 2 评论 -
C++对象的内存布局
转载两篇写的很好的关于C++虚函数表(vitual function table)vftable的文章:C++ 对象的内存布局(上):http://haoel.blog.51cto.com/313033/124567C++ 对象的内存布局(下):http://haoel.blog.51cto.com/313033/124561转载 2014-03-03 18:59:46 · 697 阅读 · 0 评论 -
程序员面试题精选100题(52)-C++面试题(1)
zhedahht.blog.163.com/blog/static/254111742011012111557832写在前面的话:由于与C++语法相关的面试题,通常用很短的篇幅就能解释清楚,不适合写博客,因此本博客一直没有关注C++的语法题。近期发现篇幅短的C++题目刚好合适微博,于是开始在微博http://weibo.com/zhedahht和http://t.163.com转载 2014-02-27 19:07:15 · 1049 阅读 · 0 评论 -
C++ derived class access specifier
// DerivedAccessSpecifier.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;class base{public: int pub_a = 0;private: int pri_b = 0;protected: int pro_c = 0;};clas原创 2014-02-10 22:23:04 · 1856 阅读 · 0 评论 -
ISO/ANSI C++ 的基本数据类型-20121212
1. typedef 关键字能够使你为现有的类型定义自己的类型名称。 typedef long int Bigones; Bigones mynum = 0L;2. 枚举 enum。 enum Week(Mon, Tues, Wed, Thurs, Fri, Sat, Sun) thisWeek; 此语句声明了名为Week的枚举类型和变量thisWeek。 thisWeek = Thurs;原创 2012-12-12 21:52:09 · 808 阅读 · 0 评论 -
IDE组成部分(Microsoft Visual Studio-20121211
基本部件有:编辑器(editor),编译器(complier),连接器()和库(classes)。编辑器:给用户提供了创建和编辑C++源代码的交互式环境。编译器:将源代码转换为目标代码,并检测和报告编译过程中的错误。存储在称作目标文件的文件中,通常以.obj为扩展名。连接器:组合编译器根据源代码文件生成的各种模块,从作为C++组成部分提供的程序库中添加所需的代码模块,并将所有模原创 2012-12-11 00:04:15 · 1263 阅读 · 0 评论 -
友元函数和友元类
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该转载 2011-10-19 14:21:28 · 401 阅读 · 0 评论 -
一道关于public,private,protected继承的经典题目
已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示: class P : protected O {…}; class Q : public原创 2011-10-19 14:10:47 · 1163 阅读 · 1 评论 -
C++中 public,protected, private 访问标号最准确总结
C++中 public,protected, private访问标号小结 第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。转载 2011-10-19 13:48:30 · 531 阅读 · 0 评论 -
C++纯虚函数 抽象类
C++纯虚函数一、定义 C++语言为我们提供了一种语法结构,通过它可以指明一个虚拟函数只是提供了一个 可被子类型改写的接口。但是,它本身并不能通过虚拟机制被调用,这就是纯虚拟函数(pure virtual function)。 纯虚函数是在转载 2011-10-18 16:39:20 · 494 阅读 · 0 评论 -
C++虚函数
定义 虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函数体 }作用 虚函数的作用是实现动态联编,也就是转载 2011-10-18 17:05:30 · 428 阅读 · 0 评论 -
C++虚函数表解析(转) ——写的真不错 (转)
http://www.cnblogs.com/myzone2009/archive/2009/08/24/1552800.html 图文并茂,并介绍了多种继承的情况。转载 2011-10-18 17:28:10 · 464 阅读 · 0 评论 -
DLL
<br />一、定义<br />动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。<br />动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静原创 2011-02-23 19:52:00 · 1109 阅读 · 0 评论 -
Windows消息概述-消息映射的实现 (http://www.vczx.com/tutorial/mfc/mfc4.php)
<br />Windows消息概述<br /> <br />Windows应用程序的输入由Windows系统以消息的形式发送给应用程序的窗口。这些窗口通过窗口过程来接收和处理消息,然后把控制返还给Windows。<br /> <br /> 消息的分类<br /> <br /> 队列消息和非队列消息<br /> <br />从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。<br />这里,对消息队列阐述如下:<br />转载 2011-03-07 14:54:00 · 1347 阅读 · 0 评论 -
静态成员
静态成员 在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。例如: class test{ public: test(){} ~test(){} publi转载 2011-10-19 15:09:38 · 444 阅读 · 0 评论 -
C++静态成员函数小结(转)
类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了转载 2011-10-19 15:13:01 · 423 阅读 · 0 评论 -
c/c++中const用法总结
const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化*************************cons的作用 (1)可以定义const常量 例如: const int Max=100; int Array[Max];转载 2011-10-19 16:38:59 · 418 阅读 · 0 评论 -
windows编程的一些基本概念-20121210
IDE: Integrated Development Environment.NET Framework由两个要素组成:CLR(公共语言运行库,Common Language Runtime) 和一组名为.NET Framework类库的程序库。应用程序在CLR中执行,.NET Framwork 类库提供了用户代码在CLR中执行时所需的功能支持。两种不同的C++应用程序:本地C++程原创 2012-12-10 23:15:56 · 741 阅读 · 0 评论 -
进程与线程的区别
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.(4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系原创 2012-04-26 17:00:13 · 550 阅读 · 0 评论 -
如何在C++中调用DLL
1. 静态链接库LIB和动态链接库DLL的qubieLIB的指令会全部被包含在最终生成的EXE文件中。静态链接库不能再包含其他的LIB或DLL。包含.h文件和.lib文件。 DLL的指令不必被包含在最终生成的EXE文件中。EXE文件执行时可以动态地引用和卸载这个与EXE独立的DLL文件。动态包含.lib文件和.dll文件。DLL内的函数分为两种:DLL导出函数,可供应用原创 2012-04-26 14:39:32 · 730 阅读 · 0 评论 -
创建MFC应用程序
http://msdn.microsoft.com/zh-cn/library/9es9d1k4.aspx转载 2012-01-06 14:14:48 · 588 阅读 · 0 评论 -
MFC中OnTimer的应用
OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现:SetTimer, KillTimer()和OnTimer().粗略的说,Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。或者说Settimer是设置定时器的,Ontimer是响应Settimer消息的。当Se转载 2012-01-06 13:47:27 · 818 阅读 · 0 评论 -
关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L(转载)
char :单字节变量类型,最多表示256个字符,wchar_t :宽字节变量类型,用于表示Unicode字符,它实际定义在里:typedef unsigned short wchar_t。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wchar_t * p = L"Hello!" ; wc转载 2011-10-24 15:08:37 · 2561 阅读 · 1 评论 -
Variant
Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含 Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函数或 TypeName 函数来决定如何处理 Variant 中的数据。 数值数据可以是任何整型或实型数,负数时范围从 -1.797693134862315E308 到转载 2011-10-24 16:23:43 · 872 阅读 · 0 评论