![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
逐影Linux
不成魔自成狂。
展开
-
rpmbuild时提示的几个错误
这里写自定义目录标题rpmbuild错误rpmbuild ERROR: No build ID note found in执行rpmbuild -ba 时, 报%install 时 有错误可在spec文档中添加以下内容解决:%define __debug_install_post %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} “%{_builddir}/%{?buildsubdir}”%{nil}rpmbuil原创 2020-06-14 19:28:21 · 1483 阅读 · 0 评论 -
混迹于C++ 之重载与覆盖(还有隐藏)
摘自《高质量程序设计指南》林锐重载与覆盖成员函数被重载的特征是:-具有相同的作用域(即同一个类定义中)--如果位于不同的作用域,则为隐藏。-函数名字相同。-参数类型/顺序或数目不同(包括const参数和非const参数)。-virtual关键字可有可无。覆盖是指派生类重新实现(或者改写)了基类的成员函数,其特征是:-不同的作用域(分别位于派生类和基类中)。-函数原创 2012-12-29 15:37:02 · 481 阅读 · 0 评论 -
混迹于C++之拷贝赋值函数和拷贝构造函数(二)
//CopyStruct.h#ifndef _COPY_STRUCT_H_#define _COPY_STRUCT_H_#include class AClass{public: AClass(){} ~AClass(){}public: int a; int b;};//要使用前向声明,必须不对AClass进行操作,所以最好是将成员函数的实现放在cpp原创 2013-12-08 22:56:33 · 657 阅读 · 0 评论 -
C++中的关键字 explicit
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX转载 2013-12-08 17:30:08 · 553 阅读 · 0 评论 -
抽象类不能被实例化
Abstract.hclass Abstract{public: Abstract(); ~Abstract();};main.cpp#include "Abstract.h"int main(){ //Abstract cAbstract; return 0;}原创 2013-12-08 17:02:22 · 747 阅读 · 0 评论 -
混迹于C++之拷贝赋值函数和拷贝构造函数(一)
参考www.fishc.com//sample.cpp/*副本构造器 * 1。可以把一个对象赋值给一个类型与之相同的变量 * 2。编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员 * 这种赋值行为称之为逐位复制(bitwise copy) * 3。在绝大多数的情况下这种行为没什么问题,但如果某些成员变量是指针的话,问题是 * 对象成员逐位复制原创 2013-01-10 21:53:57 · 405 阅读 · 0 评论 -
gcc 后出现的error和warming 修改(更新中)
1. error:expected primary-expression before 'unsigned'有可能是 unsigned 前面的 符号 是全角型,而不是 半角型。2. error: invalid conversion from ‘const void*’ to ‘void*’多半是 字符串的问题,比如pthread_cleanup_push(clean原创 2013-07-20 16:13:44 · 4896 阅读 · 0 评论 -
关于取地址和引用
引用:int q = 5;int &p = q; //p = 5, q= 5;p = 3; //p=3, q = 3;取地址:int q = 5, p; p = &q;//p = 5, q= 5;p = 3; // p =3, q = 5;原创 2013-09-15 23:24:36 · 495 阅读 · 0 评论 -
list类的使用与泛型编程
#include #include #include #include #include #include //使用模板的原因:类型不同,操作相同,就可以封装成模板//体现泛型编程的动机--通用templateclass MyList : public std::list{public: typedef typename std::list::iterator MyIt原创 2013-08-25 22:16:29 · 1397 阅读 · 0 评论 -
文件函数
//JMVC _LargeFile.cpp#include "H264AVCVideoIoLib.h"#include "LargeFile.h"#include #if defined( MSYS_WIN32 )# include # include # include #else#ifndef _LARGEFILE64_SOURCE#define _LARGEFILE原创 2013-08-28 23:53:11 · 1070 阅读 · 0 评论 -
C++的几点编码规则
C++编码中减少内存缺陷的方法和工具C++编码中减少内存缺陷的方法和工具C++编码中减少内存缺陷的方法和工具 http://wenku.baidu.com/view/5ba0ad1f650e52ea551898e4.html编码规则[1]:(1)基原创 2013-08-29 00:34:01 · 559 阅读 · 0 评论 -
标准容器List的使用
#ifndef __STD_LIST_TEST__#define __STD_LIST_TEST__#include #include using namespace std;class TestData{public: TestData() { m_Num = 0; }public: int m_Num;};#endif#inclu原创 2013-12-24 22:39:32 · 733 阅读 · 0 评论 -
标准容器map的使用(创建优先级队列)
#ifndef __STD_LIST_TEST__#define __STD_LIST_TEST__#include #include #include class TestData{public: TestData() { m_Num = 0; }public: int m_Num;};#endif#include "St原创 2013-12-25 01:20:07 · 1981 阅读 · 0 评论 -
类,指针函数,数组组合使用
//my_stack.h//基于动态数组的栈实现#ifndef __MY_STACK_H__#define __MY_STACK_H__class MyStack{public: MyStack(int size, int Mode); ~MyStack(); void push(int value); int pop() {原创 2014-11-29 00:41:40 · 610 阅读 · 0 评论 -
链表实现
#include #include #include "List.h"int (*str_cmp)(const void* data1, const void* data2);int str_cmp_string(const char* data1, const char* data2){ return strcmp(data1, data2);}int str_c原创 2014-08-28 21:44:42 · 567 阅读 · 0 评论 -
混迹于C++之友元关系
友元关系使用:友元关系是类之间的一种特殊关系,这种关系不仅允许友元类反问对方的public方法和属性,还允许友元类访问对方的protected和private方法和属性。摘自:www.fishc.com#include #include class Lovers{public: Lovers(std::string theName); void kiss原创 2013-01-03 00:35:29 · 589 阅读 · 0 评论 -
混迹于C++之拷贝赋值函数和拷贝构造函数(三)
#include #include #include class apple {public: apple() { pName = NULL; pName = new char[100]; memset(pName, 0x00, 100*sizeof(char)); } apple(const apple& other) { *this原创 2014-01-22 23:16:50 · 543 阅读 · 0 评论 -
函数指针的使用--回调函数
引自《openssl 编程》/*random.h*/#ifndef RANDOM_H#define RANDOM_Htypedef int callback_random(char *random, int len);void set_callback(callback_random *cb);int genarate_random(char *random, int len);#e原创 2013-09-01 17:53:41 · 739 阅读 · 0 评论 -
C++程序运行时,未找到已定义的符号
1、可能原因:使用了关键字原创 2014-05-24 20:13:59 · 2776 阅读 · 0 评论 -
generate和generate_n的使用
#include #include #include using namespace std;int *genIntData(int size){int *data = new int [size];//memset(data, 0x00, size);//不必使用memset初始化数组//generate(&data[0], &data[size], rand);原创 2014-02-20 00:33:29 · 707 阅读 · 0 评论 -
STL generate和generate_n的使用
#include #include #include using namespace std;int *genIntData(int size){ int *data = new int [size];//此处不能为(size) //memset(data, 0x00, size);//不必使用memset初始化数组 generate(&data[0], &data[size],原创 2014-02-20 00:29:41 · 754 阅读 · 0 评论 -
混迹于C++之虚函数表指针,虚函数表
链接:http://blog.csdn.net/lirunfa/article/details/7260694原创 2012-12-23 20:35:51 · 317 阅读 · 0 评论 -
[备考练习]C++对象和对象指针
#include #include class apple { char* pName; //类里面含有指针 public: apple() { printf("helloworld!\n"); pName = NULL; pName = (char* )malloc(sizeof(char*)); } ~apple()原创 2014-01-19 23:37:19 · 629 阅读 · 0 评论 -
C++与多线程
C++不支持内建多线程,但它可以最大程度地发挥操作系统提供的多线程机制!原创 2013-08-29 00:26:41 · 499 阅读 · 0 评论 -
C++中冒号的使用
class H264AVCENCODERLIB_API EncoderConfigLineBase{protected: EncoderConfigLineBase(const Char* pcTag, UInt uiType ) : m_cTag( pcTag ), m_uiType( uiType ) {} EncoderConfigLineBase() {}public:原创 2013-08-17 02:27:54 · 2019 阅读 · 0 评论 -
混迹C++ 之reinterpret_cast和static_cast
reinterpret_cast (expression)reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。IBM的C++指南里倒是明确告诉了我们reinterpret_cast可以,或者说应该在什么地方用来作为转换运算符:从指针类型到一个足够大的整数类型从整数类型或者枚原创 2013-01-01 18:28:44 · 2431 阅读 · 0 评论 -
学习笔记之vi之用vimgdb调试scanf
#include #include int main(){ int i,j=0,k=0; int sum=0; char ch; printf("请输入一串整数和任意数目的空格:"); while(scanf("%d",&i)==1) { sum +=i; while((ch=getchar())==' ') //屏蔽空格 ;原创 2012-12-31 13:24:43 · 2137 阅读 · 1 评论 -
混迹于C++之对象概念和关键字public 、protected、 private
OOAD(面向对象分析和设计)把一个对象的特征称为属性,而把其行为称为服务或方法。由于对象具有行为,并且可以接受外界的信息(信息传递),因此对外表现为能够提供一定的服务。当我们向一个对象传递参数并调用对应的函数时,就是在请求其提供服务。对象之间就可以通过它们能够提供的服务来交流,进而完成特定的任务。访问控制: public 任何代码 protected 这个类本身和子类原创 2012-11-11 00:29:26 · 738 阅读 · 0 评论 -
混迹于C++之继承器中的构造器与析构器
继承机制中的构造器和析构器#include #include class BaseClass{ public: BaseClass(); ~BaseClass(); void dosomething();};class SubClass:public BaseClass{public: SubClass(); ~Sub原创 2013-01-02 21:33:10 · 719 阅读 · 0 评论 -
杂记之C语言之结构和联合
//keycode.h//#ifndef _KEYCODE_H_#define _KEYCODE_H_union KeyCode{ short keyNum; char byteArr[2];};///keycode_1;#endif//unionsam.c#include #include "keycode.h"int main(){ union原创 2013-01-01 23:38:45 · 377 阅读 · 0 评论 -
混迹于C++ 之运算符重载
示例:常规的重载:#includeusing namespace std;class Complex{public: Complex();//构造函数//没有初始化 Complex(double r,double i); //进行初始化,初始化的参数赋值给private数据成员 Complex complex_add(Complex &d);//原创 2012-12-30 01:46:34 · 834 阅读 · 0 评论 -
指针与数组之从一个小程序说起
#include int main(){ int data[]={0,1,2,3,4,5,6,7,8,9}; int size=sizeof(data)/sizeof(data[0]); printf("data:%d\n",sizeof(data)); printf("结果是:%d\n",addArray(data,size)); return 0;}int ad原创 2012-12-28 20:58:14 · 455 阅读 · 0 评论 -
混迹于C++之基类和子类之多重继承(三)
摘自林锐《高质量程序设计指南》如果一个事物同时具有另外几个事物的特点(多重特点),在程序中该如何来表示它呢?使用多重继承比喻:我们家中经常使用的沙发床,它既可以当沙发来用,展开后是一张床,所以它既可以当沙发来用,显然我们不能把一个沙发和一张床放在一起(组合)叫做一个沙发床。原创 2012-12-24 22:55:02 · 524 阅读 · 0 评论 -
混迹于C++之基类和子类之虚继承(二)
摘自林锐《高质量程序设计指南》一。类的可复用性还表现在派生类的函数来实现自己的函数,即使这些函数是虚函数。class A{public: void Func1(void); void Func2(void); };class B : public A{ void Func3(void){ A::Func1();//先调用基类的函数原创 2012-12-24 22:24:20 · 461 阅读 · 0 评论 -
混迹于C++之基类和子类(一)
基类和子类的之间的继承关系: -class SubClass:public SuperClass{...} -class Pig:public Animal{...} 子类可以继承所有基类的所有方法(即相关函数)和数据。 继承机制中的构造器里定义的" Animal(theName) ":--当调用Pig()构造器时(以theName作为输入参数), An原创 2012-11-11 00:09:00 · 5982 阅读 · 0 评论 -
std::string类详解
原文地址:std::string详解作者:kieven2008 std::string类详解之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 =进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们转载 2013-01-02 19:32:10 · 716 阅读 · 0 评论 -
QT编译执行步骤
小技巧: 关闭自己编写的应用程序的时候,发现处于黑屏状态,这时可以在 终端输入 touchinput ---- mouseinput(出现鼠标,触摸笔控制不准确或者说根本就控制不了)(1) 首先在PC端编写好应用程序,并可编译执行(2)查找qmake的命令路径 whereis qmake得到 qmake: /usr/bin/原创 2013-06-06 14:42:39 · 1513 阅读 · 0 评论 -
QT程序在ARM的执行环境配置脚本
#!/bin/shexport PATH='/opt/Qtopia4.4.3/bin:/sbin/usr/sbin:/usr/sbin:/bin/usr/bin'export QPEDIR='/opt/Qtopia4.4.3'export QTDIR='/opt/Qtopia4.4.3'export QT_QWS_FONTDIR='/opt/Qtopia4.4.3/lib/font原创 2013-06-05 16:25:34 · 1170 阅读 · 0 评论 -
JMVC变量命名规则
转载自百度文库http://wenku.baidu.com/view/2854110702020740be1e9b79.htmlJMVC变量命名规则(未完待续) 前言:JMVC是用C++编写的,但是由于程序中变量众多,且名字相对来说都比较长,对于程序员来说,显然也应该起一些能够帮助自己想起该变量功能的名字,而对于我们看代码的人来说,为了更好地读懂程序,也应该根据变量命名规则转载 2013-05-08 10:43:18 · 618 阅读 · 0 评论 -
接口和抽象类的异同点
什么是接口? 接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。但是注意:C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。什么是抽象类?抽象类提供多个派生类原创 2013-02-24 16:10:10 · 10735 阅读 · 0 评论