C/C++
那个谁上山
这个作者很懒,什么都没留下…
展开
-
c++数据字节
#include using namespace std;void main(){cout cout cout cout cout cout cout cout cout cout system("pause");}记录我的学习之路。原创 2015-04-30 09:12:32 · 509 阅读 · 0 评论 -
C++ 静态成员
(1)静态成员变量本质上是全局变量,哪怕类的一个对象都不存在,类的静态成员变量也是存在的。(2)静态成员函数本质上是全局函数。(3)目的是将和某些类紧密相关的全局变量和全局函数写到类的里面,看上去更像是一个整体,更易于维护和理解。原创 2016-04-04 16:01:27 · 247 阅读 · 0 评论 -
C++ 编程个人总结
(一)使用clock()函数测试程序运行时间 捕捉从程序开始运行到clock() 被调用时所耗费的时间。时间单位是clock tick,即“时钟打点”。常数CLK_TCK:机器时钟每秒所走的时钟打点数。不同机器不一样。包含头文件: include #include #include clock_t start, stop;// clock_t 是clock()函数原创 2015-08-22 12:07:44 · 485 阅读 · 0 评论 -
C++ 赋值运算符=重载
#include using namespace std;class String{public: String():str(NULL) { } ~String() { if(str) delete[] str; } const char * c_str() { return str; } char * operator= (co原创 2016-04-04 22:53:35 · 1177 阅读 · 0 评论 -
C++ 可变长数组类的实现
涉及到构造函数,析构函数,复制构造函数,运算符=, [ ] 的重载等。#include using namespace std;class CArray{public: CArray( int s = 0 ); CArray( CArray &a); ~CArray(); void push_back(int i); CArray& operator= (const原创 2016-04-07 09:13:21 · 4352 阅读 · 0 评论 -
c++ 类模板
#include templateclass A{public: typedef typename T1::type1 T11; typedef typename T1::type2 T12; typedef typename T2::type1 T21; typedef typename T2::type2 T22; A(T11 a, T12 b, T21 c, T22原创 2016-03-25 17:01:38 · 311 阅读 · 0 评论 -
C++ 流输入输出运算符重载
#include #include #include using namespace std;class Complex{public: Complex(double r=0, double i=0):real(r), image(i) {}; friend ostream& operator<< (ostream &os, const Complex& c);原创 2016-04-07 22:44:02 · 1849 阅读 · 0 评论 -
C++ 访问范围说明符
基类的private成员:基类的成员函数基类的友元函数基类的public成员:基类的成员函数基类的友元函数派生类的成员函数派生类的友元函数其他函数基类的protected成员:基类的成员函数基类的友元函数派生类的成员函数可以访问当前对象的基类的保护成员原创 2016-04-09 11:05:34 · 411 阅读 · 0 评论 -
C++ exception
throw , try, catch 使用 int x1 = 0, x2 = 1; try { if(x1!=x2) { throw runtime_error("Number must be equal !"); } } catch(runtime_error& ex) { cout << ex.what() << endl; }原创 2016-08-29 21:57:57 · 390 阅读 · 0 评论 -
C++ 虚函数
虚函数用于实现多态,核心理念就是通过基类访问派生类定义的函数。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。虚函数只能借助于指针或者引用来达到多态的效果。#include using namespace std;class A{public: virtual void Print() { cout <原创 2016-04-09 14:06:43 · 230 阅读 · 0 评论 -
判断程序是c还是c++编译的
int main(){#ifdef __cplusplus printf("%s", "c++");#else printf("%s", "c");#endif return 0;}原创 2016-09-23 19:28:26 · 461 阅读 · 0 评论 -
只能堆/栈上创建对象
(一) 只能堆上#include class A{public: static A* Create() { return new A(); } void Destory() { delete this; } protected: A(){}; ~A(){};};int main(){ A *a = A::Create(); print原创 2016-10-22 10:35:15 · 264 阅读 · 0 评论 -
std::vector存放类的指针避免拷贝构造函数的调用
#include #include using namespace std;class A{ public: A() { printf("A()\n"); } ~A() { printf("~A()\n"); } A(const A& other) { printf("copy\n"); }};int main(){ A *a = ne原创 2016-09-26 19:48:25 · 2181 阅读 · 0 评论 -
read .txt file
/*------------------------------------------------- Read .txt file-------------------------------------------------*/void ReadTxt(std::string fileStr){ std::ifstream file(fileStr); std::string s原创 2016-11-06 20:37:17 · 629 阅读 · 0 评论 -
strcpy 拷贝问题
destination长度小于source时会出现问题,使用时需要小心。int main(){ char s1[] = "123456789"; char d1[] = "123"; strcpy(d1,s1); printf("%s\n",s1); printf("%s\n",d1); printf("0x%08x\n",&s1); printf("0x%08x原创 2016-10-05 13:12:37 · 995 阅读 · 0 评论 -
字符数组
#include #include #include int main(){ char *a = "abcd"; char b[] = "abcd"; printf("%s\n",a); printf("%d\n",sizeof(a)); // 4 printf("%s\n",b); printf("%d\n",sizeof(b)); // 5 return 0原创 2016-10-05 14:34:48 · 239 阅读 · 0 评论 -
使用itoa函数输出二进制格式
可以得到输入数的二进制、16进制格式。/* itoa example */#include #include int main (){ int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s原创 2016-10-05 10:21:25 · 2780 阅读 · 0 评论 -
malloc/free用法
int *p = (int*) malloc(sizeof(int));if(p!=NULL) // do something// ...if(p!=NULL){ free(p); p=NULL;}原创 2016-10-19 10:21:15 · 248 阅读 · 0 评论 -
C++ 查看类的内存大小
#include using namespace std;class Demo{private: int x; double y;};int main(){ cout << sizeof(Demo) << endl; cout << sizeof(char) << endl; cout << sizeof(int) << endl; cout <<原创 2016-04-04 15:49:36 · 1434 阅读 · 0 评论 -
C++ 析构函数
关于析构函数的调用顺序可以参看代码:#include using namespace std;class Demo{public: Demo(int i) { id = i; cout << "id = " << id << " constructed." << endl; } ~Demo() { cout << "id = " << id << "原创 2016-04-04 15:38:44 · 297 阅读 · 0 评论 -
C语言中main函数return的总结
在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。-----------------------------------------------------------------------------------------转载 2015-05-04 11:11:44 · 3972 阅读 · 1 评论 -
c++ 形参问题
#include using namespace std;void changeValue_1(int i){i += 2;}void changeValue_2(int &i){i += 2;}void main(){int j = 3;changeValue_1(j);cout int k = 3;chan原创 2015-05-02 11:01:57 · 358 阅读 · 0 评论 -
win8.1 64位qt5.4.0 gui程序调用控制台窗口
在VS中创建Qt程序,利用VS Add-in 创建.pro文件,在.pro文件中添加 CONFIG += console从VS Add-in 中打开.pro文件,build工程, 若出现以下错误,就在VS Add-in中选择 Qt Project Settings->Properties->Version 选择正确的Qt版本。 在Version中选择版本后,可能又出现以下错误 在VS-Ad原创 2015-05-29 12:53:08 · 1365 阅读 · 0 评论 -
VS2013建立Qt程序错误处理
debug出现以下错误 右击项目,properties->C/C++ 中Debug Information Format 选择 Program Database(/Zi) Linker->Debugging 中选择Generate Debug Info 选择 Yes(/DEBUG)原创 2015-05-29 14:36:32 · 730 阅读 · 0 评论 -
VS项目lib使用总结
学习lib文件的创建和使用原创 2015-07-01 10:50:30 · 757 阅读 · 0 评论 -
VS项目中lib文件的使用
VS项目加入lib原创 2015-06-11 22:53:35 · 731 阅读 · 0 评论 -
VS中dll项目总结
学习dll文件的创建和使用。建立两个dll文件。(1)dll_1项目。//dll_1.hint add(int x, int y);//dll_1.cpp#include "lib_1.h"int add(int x, int y){ return x + y;}这样子生成了dll_1.dll。(2)dll_2项目。//dll_2.h#i原创 2015-07-01 11:09:53 · 515 阅读 · 0 评论 -
编程小技巧:直线依次连接矩形4个端点
for( int j = 0; j < 4; j++ ) line(vtx[j], vtx[(j+1)%4], Scalar(255,0,0), 1, 4);注意:取余符号可以保证连接第一个点与最后一个点。原创 2015-07-09 09:11:52 · 683 阅读 · 0 评论 -
VS中创建dll项目,使用dll文件
参考微软:https://msdn.microsoft.com/zh-cn/library/ms235636(v=vs.100).aspx转载 2015-06-12 09:37:57 · 429 阅读 · 0 评论 -
VS中建立dll和lib项目总结
一、lib项目 lib可以使用lib。在编译第二个lib项目时,需要设置项目属性,添加第一个lib项目生成的lib文件的路径,并且在属性配置中加入lib文件的名字,还要加入头文件。 在建立控制台程序使用生成的两个lib文件时,也要加入路径,lib文件名字,lib头文件。 其他错误具体分析。 二、dll项目 dll可以使用dll。在编译第二个dll原创 2015-06-14 22:43:30 · 451 阅读 · 0 评论 -
向上类型强制转换和向下类型强制转换
编程中可能遇到父对象与子对象相互转换的问题:(一)向上类型转换(upcasting):使用只向父类的指针或引用来避免切割问题。Parent &myParent = myChild;(二)向下类型转换(downcasting):利用dynamic_cast 。Child *myChild = dynamic_cast (myParent);if (myChild != N原创 2015-10-15 19:57:57 · 553 阅读 · 0 评论 -
c++类的成员变量使用普通变量还是指针
1 使用指针(1)成员变量的构造函数需要使用参数2 使用普通变量 其他情况使用普通变量。原因:不需要释放内存。原创 2016-02-16 21:49:46 · 1479 阅读 · 0 评论 -
c++ 动态分配内存delete多次出现的错误
new分配内存,delete之后再次delete时会出错。windows系统出现类似错误,问题事件名称为 APPCRASH 。#include int main(){ int *a = new int; *a = 1; std::cout << a << std::endl; std::cout << *a << std::endl; delete a;原创 2016-02-28 17:08:57 · 1075 阅读 · 0 评论 -
c++ 函数缺省参数
定义函数的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候,若相应位置不写参数,参数就是缺省值。void func( int x1, int x2 = 2, int x3 = 3) {}func(10); // equal to func(10,2,3)func(10,8); // equal to func(10,8,3)func(10,,8); // error原创 2016-04-04 10:46:35 · 304 阅读 · 0 评论 -
C++ 类对象的内存分配
对象的内存空间对象的大小 = 所有成员变量的大小之和。每个对象各有自己的存储空间。原创 2016-04-04 11:28:33 · 485 阅读 · 0 评论 -
C++ 构造函数
#include using namespace std;class Test{public: Test(int n) { cout << "1" << endl; } Test(int n, int m) { cout << "2" << endl; } Test() { cout << "3" << endl; }};int main()原创 2016-04-04 14:31:16 · 258 阅读 · 0 评论 -
C++ 类型转换构造函数
目的:实现类型的自动转换特点:(1)只有一个参数,该参数不是该类的引用;(2)不是复制构造函数。原创 2016-04-04 14:54:20 · 277 阅读 · 0 评论 -
windows 编译boost
1. 解压文件夹。 2. 运行bootstrap.bat。3. 运行b2.exe。原创 2017-05-26 21:41:27 · 390 阅读 · 0 评论