随笔分类 -  C/C++

摘要:(转载)http://blog.csdn.net/chdhust/article/details/8036233内联函数inline和宏定义内联函数的优越性:一:inline定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换(像宏定义一样展开),没有了调用的开销,效率很高。二:类的内敛函数是一个真正的函数。三:使用内联函数inline可以完全取代表达式形式的宏定义。例子:Class A{public:int readTest(){ return nTest;}void setTest(int i);};inline void A::setTest(int i){ n... 阅读全文
posted @ 2013-10-13 18:44 robotke1 阅读(306) 评论(0) 推荐(0) 编辑
摘要:(转载)http://blog.sina.com.cn/s/blog_4d3a41f40100cvza.html实现void *memcpy(void *to, const void *from, size_t count)这个函数。首先对这个函数做一些说明。#include void *memcpy(void *to, const void *from, size_t count)函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。在C99中,to和from由restrict修饰。先来看看微软的实现:void * __cdecl m 阅读全文
posted @ 2013-10-13 18:37 robotke1 阅读(258) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.cnblogs.com/L-hq815/archive/2012/08/23/2653002.htmllambda表达式C++ 语言中的lambda表达式在很多情况下提供了函数对象的另一种实现机制。Lambda表达式并不是STL所特有的,但它广泛应用于这一环境中。Lambda是表达式是定义一个没有名称、也不需要显示类定义的函数对象。Lambda表达式一般作为一种手段,用来将函数作为实参传递到另一个函数。相比于定义和创建一个常规的函数对象而言,lambda表达式非常容易使用和理解,而且需要的代码也较少。当然,一般而言,lambda表达式并不会取代函数对象。举个例子, 阅读全文
posted @ 2013-09-27 23:49 robotke1 阅读(296) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.cnblogs.com/StudyRush/archive/2010/09/25/1834922.html全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件 阅读全文
posted @ 2013-09-27 23:32 robotke1 阅读(209) 评论(0) 推荐(0) 编辑
摘要:(转载)http://blog.csdn.net/xiajun07061225/article/details/8796257我们在C++程序中经常看到两种new的使用方式:new A以及new A()。那么这两种究竟有什么区别呢?调用new分配的内存有时候会被初始化,而有时候不会,这依赖于A的类型是否是POD(Plain old data)类型,或者它是否是包含POD成员、使用编译器生成默认构造函数的类。附:POD类型POD是Plain old data的缩写,它是一个struct或者类,且不包含构造函数、析构函数以及虚函数。维基百科给出了更加详细的解释:C++的POD类型或者是一个标量值, 阅读全文
posted @ 2013-09-27 23:29 robotke1 阅读(858) 评论(0) 推荐(1) 编辑
摘要:(转载)http://www.blogjava.net/fhtdy2004/archive/2009/05/29/278958.htmlC语言中讲讲static变量和static函数有什么作用static关键字有两种意思,你看上下文来判断1,表示变量是静态存储变量表示变量存放在静态存储区.2,表示该变量是内部连接(这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static),也就是说在其它的.cpp文件中,该变量是不可见的(你不能用).当static加在函数前面的时候表示该函数是内部连接,之在本文件中有效,别的文件中不能应用该函数.不加static的函数默认为是全局的.也就是 阅读全文
posted @ 2013-09-19 11:48 robotke1 阅读(300) 评论(0) 推荐(0) 编辑
摘要:(转载)http://myswirl.blog.163.com/blog/static/51318642200882310239324/SqStack.h****************************************#include using std::cout;using std::endl;template class SqStack{ public: SqStack(int init=50, int incr=10); bool StackEmpty() const;//判断栈是否为空 T *GetTop() const;//得到栈顶指针 void StackTr.. 阅读全文
posted @ 2013-09-07 20:55 robotke1 阅读(313) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.189works.com/article-45135-1.htmlConst成员如其它任何成员一样,简单考虑其出现在三个位置:全局作用域、普通函数内部、类里面。下面请看测试代码: 1 #include "stdafx.h" 2 #include 3 4 using namespace std; 5 6 class A 7 { 8 public: 9 const int j;10 //const int k = 3;11 const static int i;12 };13 14 //const static int A::i = 0;... 阅读全文
posted @ 2013-09-07 20:47 robotke1 阅读(221) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html学无止境!!!第一部分:(参考百度百科)一、STL简介STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iter 阅读全文
posted @ 2013-09-07 20:37 robotke1 阅读(159) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.blogjava.net/fhtdy2004/archive/2009/05/30/278971.htmlC++中将构造函数或析构函数定义为private很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访 阅读全文
posted @ 2013-09-07 20:21 robotke1 阅读(238) 评论(0) 推荐(0) 编辑
摘要:(转载)http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html在C++里,有两种方法创建对象:方法一:ClassName object(param);这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间。注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。例如,我定义了一个这样的类:class Rec{public:Rec(int width,int height);~Rec();int getAr 阅读全文
posted @ 2013-09-07 19:53 robotke1 阅读(226) 评论(0) 推荐(0) 编辑
摘要:(转载)http://blog.csdn.net/zhangxinrun/article/details/6056321代码:view plaincopy to clipboardprint?#include using namespace std;class A{public: A() { cout a1.A::A(); // 显示调用默认构造函数(写成a1.A()会报错) a1.A::A(7); // 显示调用非默认构造函数(写成a1.A(7)会报错) a1.A::~A(); // 显示调用析构函数, 但是此时对象a1并没有销毁(写成a1.~A()不会报错) // A a2(); ... 阅读全文
posted @ 2013-08-29 21:50 robotke1 阅读(352) 评论(1) 推荐(1) 编辑
摘要:(转载)http://blog.csdn.net/piratejk/article/details/34912261.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。二、typedef&结构的问题 当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构 阅读全文
posted @ 2013-08-29 21:47 robotke1 阅读(485) 评论(1) 推荐(1) 编辑
摘要:(转载)http://blog.csdn.net/piratejk/article/details/4693316 前两天去hp面试,有个题问构造函数和析构函数可不可以显示调用。 回来上网查了下,原来两个都是可以显示调用的。如下:class A{public: A() { cout<<"a cnostructor"<<endl; } ~A() { cout<<" a destructor"<<endl; }};void main(){ A a; a.A::A();//显示调用构造函数,写成a.A()会报错。 阅读全文
posted @ 2013-08-29 21:45 robotke1 阅读(283) 评论(0) 推荐(0) 编辑
摘要:(转载)http://blog.csdn.net/piratejk/article/details/6115748在linux下面变成,有时候在一个发行版本上编译通过,并且可以运行,但是将程序拷贝到另一个linux发行版本上运行时,有可能会出现如下错误:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found。这是因为不同发行版本使用的c库不一样。遇到这种情况,只能在不同发行版本下分别编译程序。 阅读全文
posted @ 2013-08-29 21:43 robotke1 阅读(141) 评论(0) 推荐(0) 编辑
摘要:(转载)http://coolshell.cn/articles/5761.htmlDennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, PHP, Javascript, 等等。但是,你对C了解吗?相信你看过本站的《C语言的谜题》还有《谁说C语言很简单?》,这里,我再写一篇关于深入理解C语言的文章,一方面是缅怀Dennis,另一方面是告诉大家应该如何学好一门语言。(顺便注明一下,下面的一些例子来源于这个slides)首先,我们先来看下面这个经典的代码 阅读全文
posted @ 2013-05-22 23:58 robotke1 阅读(370) 评论(1) 推荐(1) 编辑
摘要:(转载)http://blog.csdn.net/ctthunagchneg/article/details/8608142问题:c++中的new操作符 通常完成两个工作 分配内存及调用相应的构造出世核函数。请问:1)如何让new操作符不分配内存,只调用构造函数?2) 这样的用法有什么用?解答:(要求new显式调用构造函数,但不分配内存。)题目要求不能生成内存 还要调用构造函数 说明这个类里面没有对内部操作 但可以对外部操作 比如static的数摘录:如果我是用new分配对象的,可以显式调用析构函数吗?可能不行。除非你使用定位放置 new.#include <iostream>#i 阅读全文
posted @ 2013-05-22 14:26 robotke1 阅读(228) 评论(0) 推荐(0) 编辑
摘要:(1)自定义bool变量由于C语言中没有bool变量,我们可以自定义一个,然后放在全局的头文件中。typedef enum{ false = 0, true = 1} bool;(2)计算数组的大小(长度)#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))(3)求最大值、最小值#define MAX(x, y) ((x) >= (y) ? (x) : (y))#define MIN(x, y) ((x) >= (y) ? (y) : (x))(4)空循环防错写法#define DO_NO_THING()#include <st 阅读全文
posted @ 2013-05-20 18:29 robotke1 阅读(567) 评论(1) 推荐(1) 编辑
摘要:对于在应用程序中加入参数进行调试的方法:(1)#gdba.out(gdb) r -p1 -p2(2)或者在运行run命令前使用set args命令:(gdb) set args p1 p2可以用show args 命令来查看当我们把Linux gdb当成一个参数如何传递呢? 阅读全文
posted @ 2013-05-16 19:56 robotke1 阅读(3143) 评论(0) 推荐(0) 编辑
摘要:(转载)http://www.cnblogs.com/dongzhiquan/archive/2013/04/11/3013486.html有时为定位一些如头文件循环包含致编译不过问题,我们要知道头文件包含顺序。G++ -H 除了进行正常编译,还会打印每个头文件的名称。每个文件通过缩进表示它在包括堆栈中的深度。无效的预编译头文件也会打印出来;无效的预编译头文件打印...x,有效的打印...! #include <stdio.h>#include "head.h"int main(int argc, char* argv[]){ printf("gcc 阅读全文
posted @ 2013-05-16 18:19 robotke1 阅读(755) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示