
//【编程语言】
文章平均质量分 65
逐鹿之城
闷头做技术是学而不思则惘,整天瞎扯淡是思而不学则怠
展开
-
C++初级主题--(6)赋值函数
一.默认赋值函数的一般形式赋值语句其实是对“=”进行重载。 Test& operator=(const Test &t) { cout<<"赋值函数:"<<this<<"="<<&t<<endl; if(this != &t) data = t.data; return *this; }二.详解赋值函数赋原创 2017-02-05 23:20:54 · 814 阅读 · 1 评论 -
漂亮的LinuxC注释转换器--(2.1)目录级联转换算法预备及S_ISXXX宏的定义与使用
一.序: 在上一篇中,已经实现了基本的C++注释风格到C的注释风格转换,这一篇做升级程序的算法编写工作,使其支持目录级联转换 二.需要的基本算法说明: 可以看到Linux C函数库手册里给出了许多文件及目录函数,读者可以参考这些资料,笔者将根据需求介绍这些函数,并且使用这些函数。 三.必要的系统函数的介绍 笔者之前阅读了目录遍历这篇博文,读者可以借鉴一下,但是笔者认为网络上的这些代码是不全原创 2017-01-31 17:47:14 · 1506 阅读 · 0 评论 -
getopt用法说明
一.函数模型#include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt; #include <原创 2017-05-01 15:49:11 · 1033 阅读 · 0 评论 -
C++中虚析构函数的作用及其原理分析
参考http://blog.youkuaiyun.com/xiamentingtao/article/details/55517203 C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的作用 总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内原创 2017-03-15 00:13:04 · 61363 阅读 · 21 评论 -
C++重载的原理及其分析
函数的重载 1.为什么C++加入重载这一特性: (1)提高易用性 (2)类的构造函数需要重载 2.满足重载的条件: 参数列表不同,作用域相同。 (1)仅仅使用返回值来区分函数是否重载,是不准确的。例如...int fun(int a){}float fun(int a){}//g++编译器根本不允许这样做,直接编译不通过。产生歧义,又对fun函数进行了新的声明,两种错误...原创 2017-03-14 13:39:11 · 409 阅读 · 0 评论 -
C++之多态的原理及其分析
文档下载(含图) 分析: 一.序言 C++ 中的虚函数的作用主要是实现了多态的机制。关于多态,说白了就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数(当然引用也可以达到该目的,引用也是指针的另一种变种)。这种技 术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚 函数技术原创 2017-03-14 18:17:55 · 3577 阅读 · 2 评论 -
C++隐藏规则再分析
一.序言 前面一篇区分了重载/覆盖/隐藏,那么这一篇先给一个magic的例子。原创 2017-03-14 21:54:07 · 435 阅读 · 0 评论 -
C++中重载/覆盖/隐藏的区别分析
一.重载与覆盖 1.重载(overload)的特征 (1)作用域必须相同 (2)函数名相同 (3)参数列表不同 (4)virtual关键字可有可无 2.覆盖(override)的特征 覆盖就会牵扯到多态,父类指针指向子类的实例,使父类看起来有“多种状态” (1)作用域不同 (2)函数名相同 (3)参数列表必须相同 (4)父类(基类)必须含有virtual关键字 后面讲到隐藏原创 2017-03-14 21:47:46 · 629 阅读 · 0 评论 -
linux常用命令3.2--帮助命令
1. man(1)介绍: 命令名称:man 命令英文原意:manual手册页 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例:$ man ls 查看ls命令的帮助信息$ man services查看配置文件services的帮助信息 (2)用法: 1)与more类似的用法: 空格 翻页 回车 一行原创 2017-03-12 21:31:34 · 432 阅读 · 0 评论 -
随机数生成小例子
//用时间生成随机种子,再生成随机大数 srand(time(NULL)); for(u_long i=0; i<sz; ++i) { push_back(rand()%256);//随机生成0到255 }原创 2017-04-20 16:12:18 · 615 阅读 · 0 评论 -
函数realpath/mktemp/access/stat以及fsutils工具中的代码例子
项目见到了realpath和mktemp这两个函数,记录一下一点注意事项一.realpath1.函数模型NAME realpath - return the canonicalized absolute pathnameSYNOPSIS #include <limits.h> #include <stdlib.h> char *realpath(原创 2017-05-02 15:52:16 · 1224 阅读 · 0 评论 -
html入门学习笔记(2)(html整理)
最近使用了一款软件”幕布”最新幕布下载,通过点击此链接注册随机获取高级版升级码,制作出了最近所学的HTML知识脑图,分享如下原创 2018-01-25 21:22:05 · 666 阅读 · 1 评论 -
C/C++中程序内存区域划分大总结
程序由代码和数据组成,其中代码存储在代码区中,数据根据类型的不同存储在不同的区域中。本文分别介绍了C和C++中内存区域的划分。C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C和C++内存区域的划分。一、 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分转载 2016-03-28 19:24:05 · 9530 阅读 · 9 评论 -
#、##和__VA_ARGS__
讲述以下C语言中预处理以及C99新增的可变参数的宏__VA__ARGS__转载 2017-05-18 20:02:46 · 305 阅读 · 0 评论 -
realpath和access函数浅谈
在我所做项目中,用上了realpath和access函数,整理一下一.主要说明1.realpath函数 头文件: #include <limits.h> #include <stdlib.h> 函数原型:char *realpath(const char *path, char *resolved_path) 函数说明:realpath()用来将参数path所原创 2017-04-26 20:40:29 · 9837 阅读 · 0 评论 -
错误的trim和正确的trim(C++)
trim函数用来去除一个字符串左右两边的空格和制表符err例1–>一个错误的trim函数展示string LaStrUtils::trim(const std::string& str){ string ret; //find the first position of not start with space or '\t' string::size_type pos1原创 2017-04-25 16:13:32 · 2799 阅读 · 0 评论 -
C语言正则表达式详解 regcomp() regexec() regfree()详解
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(),一般分为三个步骤,如下所示:C语言中使用正则表转载 2017-04-24 20:49:44 · 11277 阅读 · 0 评论 -
extern/static
一个.c/.cpp是一个编译单元。 extern和static都是链接修饰符 extern外部调用,告诉编译器从外部编译单元里调用 static只允许在本地编译单元里使用,告诉编译器其他编译单元不能使用之原创 2017-04-23 19:22:34 · 333 阅读 · 0 评论 -
c++中的左值与右值
转载自http://www.cnblogs.com/catch/p/3500678.html转载 2017-05-24 16:42:01 · 373 阅读 · 1 评论 -
系统API接口库中的STDIN_FILENO介绍以及与stdin的区分
dup/dup2有时会看到这样的参数STDIN_FILENO1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类翻译 2017-03-12 21:25:20 · 946 阅读 · 0 评论 -
dup和dup2函数介绍
//河中得上龙门去,不叹江湖岁月深。这一篇和操作系统提供的API接口库结合为The summary of IPC——pipe作准备 1.dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。这两个函数的原形如下:int dup(int fildes);int dup2(int fildes, int fil翻译 2017-03-12 21:21:52 · 547 阅读 · 1 评论 -
C和指针#2.2词法规则
一.字符1.三字母词/三元符(trigrph)#include<iostream>using namespace std;int main(){ cout<<"??("<<endl; cout<<"??<"<<endl; cout<<"??="<<endl; cout<<"??)"<<endl; cout<<"??>"<<endl; cout<<原创 2017-01-24 14:52:27 · 578 阅读 · 0 评论 -
C和指针#2.8编程练习
1.题目1: increment.c-->int increment(int) negate.c-->int negate(int)main.c-->void main()编辑好后,在linux用命令gcc main.c increment.c negate.c -o main即可,主要考察编译和链接C程序的命令。//increment.c#include<stdio.h>int i原创 2017-01-24 22:55:28 · 465 阅读 · 0 评论 -
C++初级主题--(1)this指针
一.this指针的出现 1.C++中的指针 C和C++指针的最重要的区别在于C++是一种类型要求更强的语言。就void*而言,这一点表现的更突出。C不允许随便的把一个类型的指针赋给另一个类型,但允许通过void*来实现。例如:bird *b;rock *r;void *v;v = r;b = v;由于C的这种功能允许把任何一种类型看作别的类型处理,这就在类型转换系统中留下了一个大的漏洞。原创 2017-02-01 15:12:35 · 541 阅读 · 0 评论 -
C++初级主题--(2)构造函数和析构函数
一.序 C++类的6个默认的成员函数包括:构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载函数、const修饰的取地址操作符重载函数。 这篇文章先列出构造函数和析构函数,其他后续更新在其它博文。 二.详解构造函数 1.定义 数据成员多为私有的,要对它们进行初始化,必须用一个公有函数来进行。同时这个函数应该在且仅在定义对象时自动执行一次。称为构造函数(construc原创 2017-02-01 19:13:51 · 498 阅读 · 0 评论 -
C++初级主题--(3)构造函数的作用
一.序 构造函数有三个作用:构造对象、初始化对象、类型转换 二.Attention 1.构造对象 当调动构造函数时,毫无疑问将会有一个新的对象被构造出来 2.初始化对象与类型转换 问题1:变量给对象赋值可取?#include<iostream>using namespace std;class Test{public: Test(int d = 0) : data(d)原创 2017-02-03 16:55:46 · 756 阅读 · 0 评论 -
C++初级主题--(4)引用
一.引用的概念 C++函数中参数的传递方式是传值。在函数域中为参数重新分配内存,而把实参的数值传递到新分配的内存中。它的优点是有效避免函数的副作用(即改变实参的值)。 如果要求改变实参的值,怎么办呢?如果实参是一个复杂的对象,重新分配内存会引起程序执行效率大大下降,怎么办呢?在C++中有一种新的导出型数据类型—引用(reference)可以解决上面的难题。引用又称别名(alias)原创 2017-02-04 16:22:48 · 663 阅读 · 3 评论 -
C++初级主题--(5)拷贝构造函数
一.概念 同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。在建立对象时可用同一类的另一个对象来初始化该对象,这时所用的构造函数称为拷贝构造函数(Copy Constructor)。int main(){ Test t1(10); Test t(t1); //调用拷贝原创 2017-02-05 16:46:51 · 526 阅读 · 1 评论 -
C++初级主题--名字空间域和类域
一.序在C++中支持三种域:局部域、名字空间域和类域。二.名字空间域1.名字空间域是随标准C++而引入的。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:namespace ns1{ float a,b,c; fun1(){……} … }花括号括起来的部分称声明块。声明块中可以包括:类、变量(带原创 2017-02-05 18:10:12 · 2442 阅读 · 1 评论 -
方便又官方的字符串处理函数及内存函数的实现
1.介绍: 实现了字符串一些处理函数,如strlen/strcpy/strcmp/strcat/memset/memcpy/memcmp/memmove主要借鉴了linux内核的实现方法,其中strlen函数给出了不定义第三方变量实现的方法,详细的代码在我的github里,供大家借鉴/*实现各字符串处理的函数**2016-11-24*/#include<iostream>#include<原创 2016-11-26 20:30:54 · 784 阅读 · 0 评论 -
给一道关于const的面试题
/*题目:请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变A.const int const *x = &y;B.int * const x = &y;C.const int *x = &y;D.const int * const x = &y;*///正确答案B技巧:(1)const若在*的左边,则是内存中的值不可变(2)const若在*的右边,则是所指向的内存地原创 2016-06-07 22:00:37 · 1478 阅读 · 0 评论 -
关于C++中的临时对象/常与非常&左右值/的阐述
一.先看一段话 局部对象在离开建立它的函数时就消亡了,不可能在返回调用函数后继续生存,所以在处理这种情况时,编译系统会在调用函数的表达式中创建一个无名临时对象,该临时对象的生存周期只在函数调用处的表达式中。所谓return 对象,实际上是调用拷贝构造函数把该对象的值拷入临时对象(对象初始化对象),最终返回的是临时对象。如果返回的是变量,处理过程类似,只是不调用构造函数。 二.阐述 1.无名对象原创 2017-02-22 17:50:47 · 1376 阅读 · 0 评论 -
C++问题小结--1.命名空间namespace应用举例
#include<iostream>using namespace std;namespace U_Space{ void fun() { cout<<"fun1()"<<endl; }}namespace MY_Space{ void fun() { cout<<"fun2()"<<endl; }}usin原创 2016-04-11 21:29:49 · 449 阅读 · 0 评论 -
C++问题小结--2.通过几个例子谈谈const与*
const在C++里能够封锁参数,修饰函数,修饰返回值首先,清楚一个概念,比如说我们定义了一个char类型的指针char *p,那么,在这里,p是一个char *类型的指针。p指的是p指针的指向的地址,*p是这个指针的指向空间的内容。char *p = &i; //那么这里*p存的是这个i变量的值;下面让我们从几个例子入手理解const的位置放置的不同引起的含义的不同:int *p;const原创 2016-04-14 09:51:07 · 753 阅读 · 0 评论 -
C++问题小结--3.构造函数与析构函数关于其自身特点的简单代码陈述
#includeusing namespace std;class Test{public: Test() { cout"Create Test Object:"this<<endl; } Test(int) { cout"Create Test1 Object:"this<<endl; } Test(原创 2016-04-18 22:09:14 · 468 阅读 · 0 评论 -
typedef用法汇总
也许新手用这个关键字不多,但它却是一个很有用的关键字,可以使代码模块化程度更好(即与其它代码的关联较少),在C++中还是实现Traits技术的基础,也是模板编程的基本语法之一。若说变量定义是为变量命名,而typedef(或称为类型定义)就是为类型命名。既然都是命名,那就会有很多类似的地方。而变量定义我想大家都会使用,因此类型定义也必然会使用。类型定义的语法可以归结为一句话:只要在变量定义前面加上ty转载 2016-05-07 20:55:18 · 1309 阅读 · 0 评论 -
C++ Learning——Build a simple&little RB_Tree
Why would we go to such ludicrous lebgths to explain the RB_TREE? 《STL源码剖析》上给了我们一个很好的解释:(见202页) 所谓树形平衡与否,并没有一个绝对的测量标准。“平衡”的大致意义是:没有一个节点过深(深度即就是“根节点至任一节点的路径长度,即所谓该节点的深度”,在数值上与路径长度相等)。不同的平衡条件,造就出不同的原创 2016-05-08 21:39:53 · 716 阅读 · 1 评论 -
main函数参数的用法
main函数中两个参数的用法MSDN6.0中写道: argc is An integer specifying how many arguments are passed to the program from the command line. Because the program name is considered an argument, argc is at least 1.转载 2016-05-19 17:07:24 · 1431 阅读 · 0 评论 -
C_basic_summary--各种类型数据所占字节数
/*记不住罚站奥*/原创 2016-06-07 21:09:40 · 514 阅读 · 0 评论 -
h5页面分享一(附源码)
1. 页面效果2. index.html<!DOCTYPE html><html><head> <meta charset="UTF-8" /> <title>css网页布局</title> <link rel="stylesheet" href=原创 2018-02-23 16:17:31 · 35978 阅读 · 11 评论