
C/C++
文章平均质量分 52
ylwdi
这个作者很懒,什么都没留下…
展开
-
关于类限定符private的范围--自我反省
其实并不算新发现,只是我在平常的时候没注意到这一点。1.#include 2.using namespace std; 3. 4.class String 5.{ 6.public: 7. String(const char *str = NULL); 8. String(const String &other); 9. ~String(voi原创 2013-09-19 18:39:00 · 1118 阅读 · 0 评论 -
拷贝构造函数
class A{ A(); A(A a); A(A& a); A(const A& a);} 上面类A中4个构造函数可以说是重载,理论上没有错误,但是一般编译器会提示A(A a)有错“A类型的复制构造函数不能带有A类型的参数”,假如去掉编译器的这个错误提示,语法上来说是没问题的。如果只有A(A a)这个构造函数时,在构造过程中会产生死循环原创 2013-09-18 12:19:04 · 776 阅读 · 0 评论 -
C++构造函数的总结,基本是构造函数的精华了
首先来看代码: class ba{ public: int b;};ba object = {10};上面这代码能编译通过,声明了public:, 怎么没有构造函数?object是怎么回事? 上面这代码其实是具备结构体性质的C++类,要不然我们怎么说C/C++,为了理解,所以这样说,但也没说错。既然是结构体了,那么下面的初始化也就明白了。但是,这样的初始化方式只能初始原创 2013-09-17 23:16:19 · 1194 阅读 · 1 评论 -
基类和派生类的关系以及调用范围
首先,public/protected/friend/private,这些关键字,在类里叫做访问限定符,即不管你是猫是虎,是否有权限访问我类里的成员,这5个字时刻记住,就不会混淆一些概念了。 说到继承,跟基因遗传基本是一回事,其实很多理论知识都是衍生自现实,就好比古时候各路拳法剑术来自于某些动物。那么既然继承了,继承过来的的东西(整个基类)肯定是属于我的了,那三种继承方式的作原创 2013-09-17 19:29:02 · 675 阅读 · 0 评论 -
c/c++编译器的内存分配模式
另外还有一篇讲解比较详细的是:http://www.cnblogs.com/lzjsky/archive/2010/11/24/1886720.htm本文转自:http://my.oschina.net/solu/blog/2537C/C++程序内存分配详解一个由C/C++编译的程序占用的内存分为以下几个部分1转载 2013-09-03 10:19:15 · 701 阅读 · 0 评论 -
c++三种继承机制和访问权限
首先解释下protected成员,这个容易被忽略的成员,此成员跟private成员的差别是派生类可以访问,但不是所有派生类都可以访问,还要看该派生类使用的继承方式和继承级数,具体见下面:public、protected()private三种继承:总结一句话-----继承方式即访问限定符,不管哪种方式继承,派生类中继承来的基类的私有成员-----派生类中自己定义的成员函数(包括虚函数)不原创 2013-04-24 12:46:33 · 597 阅读 · 0 评论 -
C++之异常处理
程序中的错误分为编译时的错误和运行时的错误。编译时的错误主要是语法错误,比如:句尾没有加分号,括号不匹配,关键字错误等,这类错误比较容易修改,因为编译系统会指出错误在第几行,什么错误。而运行时的错误则不容易修改,因为其中的错误是不可预料的,或者可以预料但无法避免的,比如内存空间不够,或者在调用函数时,出现数组越界等错误。如果对于这些错误没有采取有效的防范措施,那么往往会得不到正确的运行结果,程序不转载 2013-04-21 15:21:19 · 416 阅读 · 0 评论 -
C++库大全
基础类1、 Dinkumware C++ Library 参考站点:http://www.dinkumware.comP.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖的获得者。其编写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的license,在其C/C+ +的产品中采用Dinkumware的库。转载 2013-03-05 12:29:29 · 716 阅读 · 0 评论 -
'for' loop initial declarations are only allowed in c99 mode
ubuntu gcc 4.6.3 编译时遇到这个不起眼的错误" error:'for' loop initial declarations are only allowed in c99 mode",去查了下c99百科,居然就是下面这玩意儿:c99标准: 变量声明不必放在语句块的开头,for 语句提倡这么写 for(int i=0;i 解决办法:要么i在for外声明,要么原创 2012-12-27 13:48:33 · 3305 阅读 · 0 评论 -
指针自加自减
指针的自加自减是根据所指类型决定的,如果是in*p,则++p是自加一个int的长度,如果int是4个字节,则p跳过4个字节,指向了下一个4字节内容的首地址。原创 2012-11-17 14:55:05 · 1308 阅读 · 0 评论 -
String类的简易实现,用到了构造函数、析构函数、重载运算符、拷贝构造函数、友元函数等知识
String类的简易实现,用到了构造函数、析构函数、重载运算符、拷贝构造函数、友元函数等知识参考资料:《高质量C++C编程指南》运行平台:VS2008Cpp代码 #include using namespace std; class String { public: String(const char *str = NULL);转载 2013-09-19 18:44:09 · 1251 阅读 · 0 评论 -
string& str(未初始化) = str1和str(已初始化过) = str1的区别和联系
string str1("abc");string& str = str1; //①string str2("cba");str = str2; //②标题就是①和②的区别和联系,因为有时候容易混淆,其实仔细看也就明了了,不过既然混淆过也就写出来。 上面①重载了该类的赋值操作符,只是没有进行内部成员赋值的操作,仅仅是给了对象的位置,仅仅做引用的初始化; 上面②也重载了原创 2013-09-19 19:28:08 · 1637 阅读 · 0 评论 -
assert与if的区别(讲个小故事一下就明白了)
记得我好像给小明说过:记住了,assert是在debug模式下才有效,它是一个用于调试的宏,除非你修改系统宏,我想吃饱了没事干才那样做。今天:我:小明,这是release版本要上线了,下面这两句代码是你写的?怎么没有if判断呢? int* p = (int*)malloc(sizeof(int)); assert(p);小明:哥,是我写得啊,assert不是也是用来判断的...原创 2018-09-15 15:34:24 · 6528 阅读 · 3 评论 -
C++ 11 左值,右值,左值引用,右值引用(emplace用法关键),std::move, std::foward
转自:https://blog.youkuaiyun.com/xiaolewennofollow/article/details/52559306这篇文章要介绍的内容和标题一致,关于C++ 11中的这几个特性网上介绍的文章很多,看了一些之后想把几个比较关键的点总结记录一下,文章比较长。给出了很多代码示例,都是编译运行测试过的,希望能用这些帮助理解C++ 11中这些比较重要的特性。关于左值和右值的...转载 2018-09-14 11:00:13 · 529 阅读 · 0 评论 -
string和string.h和cstring之间的关联
头文件string与string.h的区别在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态的编译器)。喔,原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头文件转化为C...转载 2018-09-11 23:33:43 · 712 阅读 · 0 评论 -
无命名空间的C库函数和有命名空间的C/C++函数库的用法
C语言程序中各种功能基本上都是由函数来实现的,在C语言的发展过程中建立了功能丰富的函数库,C++从C语言继承了这份宝贵的财富。在C++程序中可以使用C语言的函数库。 如果要用函数库中的函数,就必须在程序文件中包含有关的头文件,在不同的头文件中,包含了不同的函数的声明。 在C++中使用这些 头文件有两种方法。 1、用C语言的传统方法 头文件名包括后缀.h,...转载 2018-08-27 14:43:11 · 1404 阅读 · 0 评论 -
errno 错误代码对照表
errno.h- - 查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都转载 2014-04-28 11:14:40 · 4490 阅读 · 0 评论 -
快速ObjectC基本语法
一.类的定义#import // 1@interfaceStudent : NSObject // 2 { int age ; NSString *name ; // 3} @property(nonatomic , retain) NSString *name ; // 4@property(nonatomic转载 2014-02-12 16:18:30 · 707 阅读 · 0 评论 -
lua与C/C++的交互
lua作为小巧精悍的脚本语言,易于嵌入c/c++中 , 广泛应用于游戏AI ,实际上在任何经常变化的逻辑上都可以使用lua实现,配合c/c++实现的底层接口服务,能够大大降低系统的维护成本。下面对lua和c/c++的交互调用做一个实例分析:lua提供了API用于在c/c++中构造lua的运行环境,相关接口如下://创建lua运行上下文lua_State* luaL_newstate(v转载 2014-01-13 15:29:08 · 582 阅读 · 0 评论 -
shared_ptr
shared_ptr是一个最像指针的"智能指针",是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的,Boost库的许多组件--甚至还包括其他一些领域的智能指针都使用了shared_ptr。抱歉,我实在想不出什么更恰当的词汇来形容它在软件开发中的重要性。再强调一遍,shared_ptr非常有价值、非常重要、非常有用。 shared_ptr与scoped_ptr一样转载 2013-10-30 13:37:19 · 451 阅读 · 0 评论 -
快速排序算法
/**************************************************//* 函数功能:快速排序算法 *//* 函数参数:结构类型table的指针变量tab *//* 整型变量left和right左右边界的下标 *//* 函数返回值:空转载 2013-09-23 22:50:40 · 486 阅读 · 0 评论 -
编程之路,给自己一个方法,一个提醒
很多时候遇到这种问题,从开始接触编程到现在。为什么要写这感想,想了想,也许写到这里在自己迷茫的时候看到自己的文章能起到醍醐灌顶的效果,可以立马想起自己的方向,毕竟人总是在某些时候失去自我。 自己擅长的语言本身、通用的基础、通用的技术(例如C/C++ 、通信基础-算法-数据结构-数据库通用知识--内存--编译原理等、多线程技术)这3个是主要学习的东西,笔试题基本上都是考的原创 2013-09-20 02:12:58 · 661 阅读 · 0 评论 -
经典结构、算法、微软、谷歌面试题
参考: http://blog.youkuaiyun.com/v_july_v/article/details/6015165 参考:http://zhedahht.blog.163.com/转载 2012-03-19 16:57:35 · 497 阅读 · 0 评论 -
网络编程
http://www.cppblog.com/Solstice/archive/2011/06/06/148129.htmlhttp://www.cnblogs.com/ws0919/archive/2009/09/25/1573749.html转载 2012-02-08 00:00:28 · 302 阅读 · 0 评论 -
C++新手及迷茫者该看下
http://zhidao.baidu.com/question/318858550.html?an=0&si=6 包括 c++实际用途 c++权威丛书 丛书路线 丛书类别。转载 2011-11-20 01:07:12 · 584 阅读 · 0 评论 -
特殊数据类型成员变量的初始化
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a. 常量型成员变量b. 引用型成员变量c. 静态成员变量d. 整型静态常量成员变量e. 非整型静态常量成员变量 对于常量型成员变量和引用型成员变量的初始化,必须通过构造函数初始化列表的方式进行。转载 2011-11-17 20:31:45 · 369 阅读 · 0 评论 -
基类指针与派生类指针的相互转换
基类指针与派生类指针的相互转换1,直接用基类指针引用基类对象2,直接用派生类指针引用派生类对象3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)4,用派生类指针引用基类的对象。这种引用方式会导致语法错误。派生类指针必须先强制转换为基类指针,这种方法是安全的。 而在侯捷的深入浅出MFC中第二章C++重要性质中:转载 2011-06-01 15:42:00 · 5519 阅读 · 0 评论 -
TAG书籍资源好多,需要的时候来查就是了
<br />C++ Visual 6.0 oracle 智商 TCP-IP详解卷1:协议.rar 应用开发教程.part2.rar MyEclipse+6+Java+开发中文教程.pdf MyEclipse_6_Java_开发中文教程_全部代码.rar JAVA_完完全全的中文版Java Java企业级开发项目实践.pdf API_Sun公司官方出版.chm JAVA_精通swing程序设计.chm Servlet开发与实例.pdf Java 应用原创 2011-03-30 00:21:00 · 1252 阅读 · 0 评论 -
复杂指针解读方法(待总结)
<br />对于复杂指针,可以看看这样的解读方法C指针声明解读之左右法则http://tieba.baidu.com/f?kz=691121990转载 2011-03-11 13:06:00 · 501 阅读 · 0 评论 -
C/C++从入门到高手所有必备
C/C++从入门到高手所有必备PDF书籍收藏<br /><br />《C和指针》- PDF高清版<br />下载地址:http://www.fishc.com/a/book/C/821.html<br /><br />《C程序设计语言》- 完美中文版PDF<br />下载地址:http://www.fishc.com/a/book/C/632.html<br /><br />《The C Programming Language》- 英文原版<br />下载地址:http://www.fishc.com/a原创 2011-02-20 20:25:00 · 880 阅读 · 0 评论 -
位与运算符 "&" 运算符 x=x&(x-1)
<br />规律总结:<br />每执行一次x = x&(x-1),效果 使得 x二进制的最后一个 “1”变为零。<br />如 x=8(10)<br />8&7<br />01000(2)& 00111(2)<br />结果为0<br /><br />如 x=3(10)<br />011 (2)& 010(2)<br />结果为10(2)<br /> <br />用法:<br />①统计1的个数<br /><br />求下面函数的返回值 <br />----------------------------转载 2011-02-28 20:45:00 · 1429 阅读 · 0 评论 -
c++笔试题(带答案)值得我们一看
<br />C++笔试题目大全(笔试宝典)(不断完善中) 收藏 (转)<br /><br />1.new 、 delete 、 malloc 、 free 关系 <br />delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数。 malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是 C++ 的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象转载 2011-02-28 19:52:00 · 4187 阅读 · 1 评论 -
如何实现在类中定义真正的const成员变量
类中的const成员变量2009/07/08 12:38<br />有时我们希望某些常量只在类中有效。由于#define定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const修饰数据成员来实现。const数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。<br /> 不能在类声明中初始化const数据成员。以下用法是错误的,因为类的对象未被创建时,转载 2011-02-28 20:20:00 · 3329 阅读 · 1 评论 -
new和delete的一个注意事项
问题:#include class myint{ int a;};int main(){ /* 在用delete释放对象数组时,留意不要丢了符号‘[]’。例如 delete []objects; // 正确的用法 delete objects; // 错误的用法 后者相当于delete objects转载 2010-01-13 16:52:00 · 675 阅读 · 0 评论 -
#define用法总结
1. 定义简单的常数:定义常量,便于修改(切不可在后面加上分号!) #define N 1000 等效于 const int N = 1000; 但略有不同,define只是简单替换,而不是作为一个量来使用.2. 定义简单的函数:注意多使用括号define可以像函数那样接受一些参数,如下:#define max(x,y) (x)>(y)?(x):(y);这个定义就将返回转载 2011-11-30 15:24:33 · 9114 阅读 · 0 评论 -
VS2008 Debug与Release的本质区别
对于VS2008的初次使用者来说,常会遇到的编译问题时,Debug版本运行正常,但在Release版本则不稳定或无法运行。以下是对Debug版本与Release版本本质区别的分析: Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。转载 2011-11-30 23:46:22 · 1096 阅读 · 0 评论 -
uml类图
http://www.cnblogs.com/riky/archive/2007/04/07/704298.htmlhttp://apps.hi.baidu.com/share/detail/17860232http://www.mscto.com/SoftEngin/UML/2009092394459.html转载 2012-02-07 22:08:58 · 313 阅读 · 0 评论 -
网络游戏编程的灵魂——数据结构与算法
http://tieba.baidu.com/p/512948500转载 2012-02-07 00:02:14 · 614 阅读 · 0 评论 -
框架和平台的区别以及重要性
框架(Framework)和平台(Platform)是软件行业中经常看到的术语,应当说也是这个行业发展的方向。在讨论其重要性之前,我们先看看两者在概念上的区别。 框架是针对一定的应用领域进行开发的,比如,ACE(Adaptive Communication Environment)就是针对网络通讯而开发的一个框架。框架通常对于应用进行了一定的抽象,将需要的一些通用的功能做成了软件模块。当用户(或开转载 2012-02-06 23:15:31 · 682 阅读 · 0 评论 -
一位软件工程师6年的总结
http://tieba.baidu.com/p/1291955543转载 2012-02-07 00:21:44 · 442 阅读 · 0 评论