c++高级
文章平均质量分 78
HNFXS985
这个作者很懒,什么都没留下…
展开
-
C++软件开发规范
这个编程规范是我们自己做项目时,根据google c++编程规范改写的,适合小型项目使用,给大家分享一下。头文件 通常,每一个.cc文件(C++的源文件)都有一个对应的.h文件(头文件),也有一些例外,如单元测试代码和只包含main()的.cc文件。 1. #define保护 所有头文件都应该使用#define防止头文件被多重包含(multiple incl转载 2017-08-27 11:30:17 · 963 阅读 · 0 评论 -
c++构造函数总结----C++拷贝构造函数及重写operator =的区别
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助。c++类的构造函数详解: 一、 构造函数是干什么的class Counter{public:原创 2013-08-21 11:09:02 · 2360 阅读 · 0 评论 -
C++模版中的typename关键字和嵌套依赖类型(依赖名称)
关于C++中模版常用的的typename和class,先写结论吧:在声明模版参数时,class和typename关键是等价的,可以相互替换。在涉及“嵌套依赖类型名”(nested dependent type name)的时候,必须用typename关键字去标识。规则2有个例外,就是在继承列表或者成员初始化列表中的基类初始化时,可以不用typename去标识“嵌套依赖类型”。原创 2013-08-21 00:13:12 · 3863 阅读 · 0 评论 -
c++难点(较高级使用技巧)总结
一、数组名和指针的深入理解指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。魔幻数组名请看程序(本文程序在WIN32平台下编译):#include using namespace std;int main(){ char str[10]; char*原创 2013-05-12 20:09:26 · 2726 阅读 · 0 评论 -
在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
转自:http://www.jb51.net/article/34362.htm1.scanf("%s",str)和gets(str)scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)只读到输入字符的空格或回车处,而gets(str)读到回车处结束,所以当句子中单词由空格分开时要用后者来输入,如下图所示: 需要转载 2013-07-19 00:28:23 · 1303 阅读 · 0 评论 -
引用的本质是什么(c++,c#,java)?
转载自:http://www.cnblogs.com/rollenholt/articles/1907408.html在大学的时候,教材里这么说的“引用是个别名...引用作为目标的别名而使用...引用不是值不占存储空间...引用只有声明,没有定义...”那么,引用到底占不占内存空间,引用的本质是什么?下面举个例子:int a = 10;int &b = a;这里,显然,b是转载 2013-02-15 22:38:46 · 1279 阅读 · 1 评论 -
c#中using-添加引用-程序集(详解) 以及与 c++中include等区别
一、c#中Using无非就三个作用,引入名字空间,减少代码输入量;给名字空间或类型定义一个别名;try-catch的一种替代。二、c#中添加引用的作用是把其它程序集包含到本项目中,就好像在本项目中写的类一样,因为只有在一个项目中写的类才能互相识别。c#中一个项目中写的两个类是无条件相互识别的,比如在项目中写了Class1和Class2,当然这两个类的名字空间一样。在Class2的方法中可以直接原创 2013-02-23 22:54:17 · 6095 阅读 · 1 评论 -
静态函数 抽象类 覆盖-重写-重载 委托-事件-匿名函数 密封 Lambda表达式
下面叙述以C#语言为例,其它语言也有参考价值1、静态函数 在类中定义静态函数,就不用实例化类了,直接用类名就可以访问了。在定义类的方法时,如果该方法与类的成员变量没有任何关系(也就是根本不会使用到类的成员变量),不对该类的成员变量进行读写,只是根据方法的参数进行操作,那么就应该将该方法声明为static方法,以节省资源(我自己不赞同)和提高执行速度(这点很关键)。比如常用的系统定义好的原创 2013-02-24 13:43:26 · 1730 阅读 · 0 评论 -
再论“Ansi,UTF8,Unicode,ASCII编码的区别”
转自:http://blog.csdn.net/xiongxiao/article/details/3741731近日需要不同的编码,关于上述编码,一直迷迷糊糊,查了些资料,总算大致了解了,下面全是从网上搜来的:1. ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码转载 2013-07-19 00:12:10 · 1239 阅读 · 0 评论 -
c++设计模式:单件模式(Singleton Pattern)
转自:http://www.cnblogs.com/osyun/archive/2011/12/29/2306765.html定义:单件模式确保一个类只有一个实例,并提供一个全局访问点[【本质是把构造函数设为私有的并想办法在内存只保存自己对象的一份实例,不仅达到只创建一份实例的目的,而且可以直接通过类名直接获取在堆中的实例对象】实现一:#include using na转载 2013-03-04 16:35:36 · 602 阅读 · 0 评论 -
c++ Lib Dll及相关头文件关系和怎么操作
一、动态库大体使用过程:(1)DLL中导出类、函数、对象 1. 创建一个空的Win32 Dynamic-Link Library项目Test 2. 在项目中添加一个Test.h头文件,该文件的内容如下: //导出类 class __declspec(dllexport) CTest { ... }; //导出函数 __declspec(dl原创 2013-03-05 21:41:15 · 1623 阅读 · 0 评论 -
c++字符编码的总结(ANSI、Unicode、UTF、UCS)
一、几种字符集合介绍:ANSI、Unicode与UTF8这部分内容转自:http://www.j2men.com/index.php/archives/2152我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态原创 2013-03-19 16:56:12 · 2727 阅读 · 0 评论 -
STL内存管理器(Allocator)简单理解
转自:http://blog.csdn.net/yfkiss/article/details/66333371. 概述STL Allocator是STL的内存管理器,也是最低调的部分之一,你可能使用了3年stl,但却不知其为何物。STL标准如下介绍Allocatorthe STL includes some low-level mechanisms for allocating a转载 2013-09-06 12:47:47 · 3238 阅读 · 0 评论 -
彻底梳理C++ static、const和static const 以及它们的初始化
转自:http://blog.csdn.net/yjkwf/article/details/6067267const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。 static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类转载 2013-09-14 15:33:35 · 2533 阅读 · 0 评论 -
[引用区别] c++中引用与java中引用区别
在Java中,类实例声明和构造是分开。"T a;"是声明,而"a=new T();"才是构造。引用声明和C++相同。但是Java的机制与C++不同,Java中的引用也叫句柄,或者说句柄才是其真实名称。类声明的都是一个句柄,调用构造函数才会使得句柄指向类实例。因此Java中没有类似于C++中的复制函数,因为Java的复制都是直接复制句柄内容。例如"T b=a;"只不过是将a的句柄复制(赋值)给了b,原创 2016-03-31 21:08:00 · 7898 阅读 · 5 评论 -
hao—C++和Java从编译到运行的过程区别
以下内容纯属臆测,没有科学依据,也不想(没空)翻看权威资料。一、C++编译和运行过程1、C++每个编译单元整体上看都是各种声明和定义 C++编译单元就是指每个cpp文件,整体上看(全局的东西,函数内部不算,类定义内部不算)无非就是变量(包括类的实例也算变量)、函数或者类的声明和定义。其中变量占用内存空间,存放在运行时的“全局区”,这个内存空间的数据一般是可变的,可以随时被修改;函原创 2016-04-03 15:58:36 · 1854 阅读 · 0 评论 -
关于流(io)
流是一种对集合上的一系列转换延迟执行的机制。这样简单理解记忆流:流就是一个帮定了一个“外设”的容器,具有缓冲功能。之所以产生流,是为了方便处理从一个容器往另一个容器里放东西的时候,不用考虑另一个容器是否来的及接收和是否能够容得下,这些都由流自动完成。所以简单理解流时,也可以把流看做事绑定了一个“外设容器”的“具有缓冲效果的外设”。下面举例讲解为什么可以这样简单理解:我们在new一个流的原创 2016-05-02 22:56:27 · 708 阅读 · 0 评论 -
【总结】C++、C#、Java、Javascript、Python中引用的区别
首先分两大阵营:C++中引用是一块阵营,C#、Java、Javascript、Python中引用是另一块阵营。之所以这样分是因为同一阵营中引用使用方法基本一样。C++引用本质是个常量指针,而其他语言引用本质是个普通指针。也就意味着C++的引用一旦初始化(执行确定了),以后就不可再修改(不可再指向其他对象),而其他语言的引用可以随时修改指向。具体区别:(先声明下面原创 2016-04-23 20:02:08 · 1445 阅读 · 0 评论 -
【好】C++中lib 和 dll 的区别、生成以及使用详解
文章转自:http://www.cnblogs.com/panweishadow/p/3632873.html 或者 http://www.cnblogs.com/TenosDoIt/p/3203137.htmllib 和 dll 的区别、生成以及使用详解【目录】lib dll介绍生成动态库调用动态库生成静态库调用静态库转载 2016-04-03 19:58:39 · 6992 阅读 · 1 评论 -
怎样从一个DLL中导出一个C++类
文章转自:http://blog.csdn.net/clever101/article/details/3034743 原文作者:Alex Blekhman 翻译:朱金灿 原文来源:http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx 译文来源:http://blog.csdn.转载 2016-04-03 19:50:59 · 874 阅读 · 0 评论 -
访问修饰符的真正理解
首先,必须明确Java中类成员的访问修饰符(public、private、protect、默认或friendly等,C++也同理),并不能简单的理解为书上说的如“子类可以访问”,具体因结合类的内存布局图来理解。例如一个父类有public a成员和protect b成员,在其子类的方法中访问a时,要考虑子类的内存布局能否看到a。 结合内存布局图就可以理解所谓“子类可以访问父类的protect原创 2016-04-01 00:31:37 · 1391 阅读 · 1 评论 -
C++ Dll【应用】
以下内容转自:http://blog.csdn.net/yysdsyl/article/details/2626033前言:为了介绍C#写界面,C++写算法的快捷开发方式,C#与C++的交互,首先介绍c++,C#内部的DLL,COM调用。一, 静态的Lib:静态的lib经过编译后只有.h和.lib文件,没有dll,因为实现部分也包含在lib中,这就是与动态dll的区别。还有在写静态li转载 2014-07-19 11:23:59 · 965 阅读 · 0 评论 -
C++ DLL总结—静动态调用、导出类
1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件转载 2014-07-19 11:03:27 · 8034 阅读 · 0 评论 -
动态链接库编程--个人笔记
1. 动态链接库概述 (静态库和动态库、动态链接库的加载)概述: Windows API中的所有函数都包含在DLL中.其中有三个最重要的DLL: Kernel32.dll,它包含用于管理内存、进程和线程的各个函数; Uer32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; GDI32.dll,它包含用于画转载 2014-03-31 16:10:30 · 846 阅读 · 0 评论 -
动态链接库编程--个人笔记
1. 动态链接库概述 (静态库和动态库、动态链接库的加载)概述: Windows API中的所有函数都包含在DLL中.其中有三个最重要的DLL: Kernel32.dll,它包含用于管理内存、进程和线程的各个函数; Uer32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; GDI32.dll,它包含用于画转载 2014-03-31 16:11:20 · 629 阅读 · 0 评论 -
总结---c++ 指针相关总结
一、取地址运算符&这个是我自己理解,可能错误(编译器内部实现可能比这个要复杂的多,但这样理解基本可以应付复杂的语句和面试题目了):取地址运算符返回一个零时的变量(有一个临时的符号在符号表里),所以再对这个临时变量做去内容运算(*)时,才能正确的知道到底取多长内存的数据,因为可以从符号表里获取零时变量的类型信息。类似这个的还有强制转换也可以看成“强制转换运算符”返回的也是一个零时变量(符原创 2013-04-19 01:01:42 · 788 阅读 · 0 评论 -
cstring ,std::string,lPCWSTR,_T,L()等彻底梳理
转自:http://blog.csdn.net/txdb/article/details/7298502vc中的字符串类型真是眼花缭乱。下面来google下。整理如下:c中只有字符数组,字符数组如果以\0结尾,就是字符串c++中有字符串类型string,string接收字符数组,string要通过方法c_str()转换才能赋值给字符数组。这个世界转载 2013-04-21 17:22:30 · 1832 阅读 · 0 评论 -
c++高级---图解:C++中类的内存分布(总结)
定义一个类如下:它的内存分布如图:以上就完成内存布局的理解了,为了更好的运用,下面举个例子:对上面代码的分析:注:上面所有内容来某个自某个csdn网友个人理解,我感觉应该没问题(除非比较变态的c++编译器)。 下面内容比较杂,转自:http://blog.csdn.net/mal327/article/details/6784254原创 2013-04-18 09:51:29 · 1165 阅读 · 0 评论 -
c++高级---不修改源类访问源类中的私有成员
转自:http://blog.csdn.net/steedhorse/article/details/1263127前几天,在论坛里看到一个帖子,内容是:[cpp] view plaincopyprint?class a { private: int k; }; class a{private: int k;};要求不用友元,转载 2013-04-18 15:37:28 · 969 阅读 · 0 评论 -
c++高级---C++拷贝构造函数详解
转自:http://blog.csdn.net/lwbeyond/article/details/6202256一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyprint?int a = 100; int b = a; int a = 100;int转载 2013-04-19 16:49:03 · 641 阅读 · 0 评论 -
c++高级---C四种强制类型转换的总结
下面转自:http://www.cnblogs.com/alexqdh/archive/2011/06/09/2075713.htmlC++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要转载 2013-04-24 16:21:56 · 1170 阅读 · 0 评论 -
c++高级---c语言中关于运算符优先级和运算符集合顺序的理解(*p++和*++p的区别)
转自:http://blog.csdn.net/zhang429350061/article/details/8775693接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1)。 1、++i和i++的区别 如清单1(注意代码中的注释): [cpp] view plaincopy#inc转载 2013-05-07 14:48:54 · 1790 阅读 · 0 评论 -
c++高级---C/C++语言void及void指针
原文: http://blog.csdn.net/yyyuhan/article/details/31532901.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义 void的字面意思是“无类型”,void *转载 2013-05-24 14:55:49 · 794 阅读 · 0 评论 -
c++高级---C/C++中如何获取数组的长度
C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array)原创 2013-05-27 20:44:52 · 905 阅读 · 0 评论 -
c++高级---C++中的头文件和源文件(链接时怎么对应、头文件中能定义什么)
转自:http://www.cnblogs.com/lidabo/archive/2012/04/17/2454568.html一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate转载 2013-03-02 11:16:55 · 2910 阅读 · 0 评论 -
c++高级---c++类的内部定义比较特殊的东西(类型,常量等)
一、在类的内部定义新的类型,并引伸出union的妙用转自:http://www.blogjava.net/bacoo/archive/2008/07/13/214616.html在类内部其实是可以定义一些类型的,比如struct、union、class,其实也就只有这三类可以被定义,也只有这三类可以定义它们各自的对象,然后“.”出来或者“->”出来,C++中只有这三类了。对于它转载 2013-04-15 21:01:41 · 1536 阅读 · 0 评论 -
c++高级---C_C++的union的学习笔记总结
转自:http://www.yunsec.net/a/school/ymbc/C/2009/1221/2341.html联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合?“联合”是一种特殊的类,转载 2013-04-18 15:30:27 · 1647 阅读 · 0 评论 -
c++高级---C++类中的常量以及cosnt指针的理解
部分转自:http://www.cnblogs.com/this-543273659/archive/2011/08/02/2125020.html由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的原创 2013-04-22 20:57:26 · 1115 阅读 · 0 评论 -
c++高级---关于C++指针大小和Void*使用的总结
一、指针大小问题:【这条内容我还不确定是否准确,网上说法纷纭,但对于现代的编译器来说我更相信是准确的】C++中任何指针的大小在同一编译器下一定是相同的,一般为32位即4个字节,但对于64位机子也可能是64位,但同一编译器下,各种类型的指针要么同位32位要么同为64位。正因为如此,所以很多C++库函数都使用Void*作为形参且可以保证跨平台(不会出现实参作为一种具体指针类型转换为形参Void*是原创 2013-04-02 11:05:10 · 1841 阅读 · 0 评论 -
c++高级---C++ 类中特殊的成员变量(常变量、引用、静态)
转自:http://www.cnblogs.com/zhoug2020/archive/2012/08/31/2665451.html有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型) 常量和引用(本质还是对象的成员变量),必须通过参数转载 2013-03-03 00:56:20 · 1277 阅读 · 0 评论