c++
TerryZjl
这个作者很懒,什么都没留下…
展开
-
数组作为参数进行传递
今天编程序时发生了个这样的错误:在头文件里 定义了一个数组:View Code1 char s[]="1234567890";又定义了一个现显示组的函数:View Code1 void Display(char* c);通过下面这两条语句分别在现实函数和主函数中现实数组的大小:View Code1转载 2016-11-07 16:48:31 · 6580 阅读 · 0 评论 -
【STL】map与set的使用方法
使用set set 是通过封装红黑树实现的key模型的搜索树,只有一个key值;除了搜索还可以快速的去重和排序; set的key值不能被迭代器修改,但08版编译器有bug定义set对象std::settemplate < class T, // set::key_type/value_type class Compar原创 2017-11-29 13:22:11 · 597 阅读 · 0 评论 -
C++异常总结
C++异常为什么要用c++的异常处理机制? 在我们平时写C语言程序时,经常出现会出现一些错误,有些是我们可以预测到的,这些我们可以通过返回错误码,或者设置回调函数打印错误信息等方法处理。但还有些程错误是我们不好预测的,如断错误,这时产生错误我们没有处理就会终止程序,然而我们经常运行程序后遇到错误不希望终止,如我们进程使用一些垃圾软件会闪退,这就是因为他门的程序异常没有处理好,所以遇到预测范围外原创 2017-09-10 19:50:57 · 7001 阅读 · 0 评论 -
【STL】list容器使用与模拟
STL里的list容器里实现了许多接口,list也是我们最常用的容器之一,所以有必要熟练的运用这些接口1.定义链表的几种方式 std::list first; // 构造一个空链表 std::list second (4,100); // 构造一个有四个整形结点的链表 std:原创 2017-09-25 17:10:43 · 424 阅读 · 0 评论 -
【C++】模板总结
模板模板是一种泛型编程的机制,也是一种复用的手段。//模板函数的格式:template1,... ,class 形参n>返回值 fun(参数列表){...}//模板类的格式:template1,... ,class 形参n>class A{...};如何实例化编译器调用模板函数时,编译器会根据实参的类型,推演出模板的类型,并再生产相应的代码。原创 2017-09-17 10:21:44 · 768 阅读 · 0 评论 -
菱形虚拟继承详解
菱形继承是继承里面比较复杂的有一种,在这里我分别对菱形继承、菱形虚拟继承、菱形虚拟继承含虚函数这几种情况要清楚虚表和虚基表是两个完全不同的概念虚表:虚函数表,存的是虚函数->多态虚基表:存的是偏移量,解决二义性和数据冗余性。虚继承解决了在菱形继承里面子类对象包含多分父类对象的数据冗余现象和二义性。原创 2017-04-16 18:48:54 · 885 阅读 · 0 评论 -
C++--String类型各种重载函数的实现
#include #include #include #include using namespace std; class String { friend bool operator == (const String &,const String &); friend bool operator !=转载 2017-03-26 22:12:03 · 2110 阅读 · 0 评论 -
深入剖析c++动态内存管理
它们都是动态管理内存的入口,malloc / free是CC++标准库的函数,new/ delete是C++操作符。为什么C++要使用new / delete 而不使用malloc/free?因为 malloc / free只是动态分配内存空间释放空间。而new/ delete除了分配空间还会调用构造函数和析构函数进行初始化与清理(清理成员),而且malloc/frec需要手动计算类型大小且返回值会void", new / delete可自己计算类型的大小,返回对应类型的指针。下面剖析new /原创 2017-03-14 14:32:13 · 360 阅读 · 0 评论 -
C++中继承与虚继承
一.继承的关系及继承访问限定符继承是面向对象复用的重要手段。通过继承定义一个类,继承类型之间的关系模型,共享共有的东西,实现各自本质的不同的东西下面是三种继承关系下基类成员在派生类中的访问变化那么private和protected都是限定直接访问,那么他们有什么区别?先看下面这个单继承代码在作解释:#includeusing namespace std;c原创 2017-04-07 13:23:06 · 664 阅读 · 0 评论 -
三种方法实现如何不用循环实现1+...+n?
三种方法实现如何不用循环实现1+...+n?如何不用循环实现1+...+n?这道题目是一道面试题,至于为什么要这样问,用循环解决1加到n岂不是更高效,也是为了锻炼一下思维,看你能想到几种。这里用递归和模板还有构造函数三种方法实现。原创 2017-04-09 15:52:56 · 2189 阅读 · 0 评论 -
深、浅拷贝构造函数
#includeusing namespace std;class Array{public: //构造函数 Array(int sz) :_sz(sz) , _ptr(new int[_sz]) { cout << "Array" << endl; } ////浅拷贝构造函数 //类成员变量有动态开辟,然后p1._str和p2._str指向原创 2017-03-13 18:19:45 · 359 阅读 · 0 评论 -
C++面试题之模拟实现string类
C++中的string类是一个很常见的面试题,string类里必须有的构造函数,拷贝构造,赋值运算符重载,析构函数等成员函数,下面看看是如何实现以及如何处理动态内存 写时拷贝技术是通过"引用计数"实现的,因为浅拷贝的缺陷,所以在这个时候我们就引入了引用计数的拷贝。但是当其中一个对象改变它的值时,其他对象的值就会随之改变,所以此时我们采取这样一种做法,就是写时拷贝。写时拷贝指用浅拷贝的方法拷贝其他对象,多个指针指向同一块空间,只有当对其中一个对象修改时,才会开辟一个新的空间给这个对象,和它原来指向同一空间原创 2017-03-27 19:36:42 · 1188 阅读 · 0 评论 -
运算符重载的分析及代码实现
这面是一些运算符重载的代码,其中的注释是对函数调用返回及运算符重载的解释,帮助理解#define _CRT_SECURE_NO_WARNINGS 1#include#include#include#includeusing namespace std;//运算符重载class Complex{private: double _real; double _imag原创 2017-03-09 19:41:49 · 540 阅读 · 0 评论 -
C++中引用与指针的区别与联系
C++中引用与指针的区别与联系:1.引用只能在定义时初始化一次,之后不能再改变引用的指向(从一而终);而指针的值可以随意改变。所以指针比引用灵活。2.引用必须指向有效的变量,指针可以为空。3.sizeof指针和sizeof引用的意义不一样。 sizeof引用的意义是引用指向的变量的大小;而sizeof指针的意义是指针指向的地址的大 小,32位平台下是4,64位平台下是8.原创 2017-03-01 16:50:21 · 272 阅读 · 0 评论 -
VS2013控制台程序运行一闪而过的最佳解决办法
有些人会给程序最后加一句 system("pause"); 但是我发现加上这条语句虽然可以让窗口在最后停下来,但是在c++程序里不能打印出最后析构函数里想输出的内容。所以推荐使用下面的方法,配置一下编译器设置。配置方法:项目——>属性——>配置属性——>连接器——>系统——>子系统(subSystem), 然后将值配置为“控制台(/SUBSYSTEM:CONSOLE)” 。 确定返回就ok了原创 2017-02-28 17:34:39 · 10994 阅读 · 8 评论 -
VS2013 c++/c编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等的解决方法
使用VS2013编译的程序在windows 7中运行时 经常会出现找不到 相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖文件打包到*.exe中来,以减少对环境的依赖。解决方法:1.将这些dll打包,和应用程序一起发布;2.采用MFC静态编译;一般可以配置一下两项:1.项目 -> 配置属性->C/C++->代码生成->运行库 :选择/MT。原创 2016-11-20 01:08:50 · 4523 阅读 · 0 评论 -
VC 运行时库 /MD、/MDd 和 /MT、/MTd
有段时间在写cuda程序是出现过error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误原因应该是在vs2010 工程属性中 c/c++的代码生成(code generation)中的设置与cuda c/c++ Host Runtime library不一样导致的。后来在写opencv程序中的 findcontour(转载 2016-11-07 23:08:42 · 645 阅读 · 0 评论 -
【C++】多态总结
多态是如何实现绑定的?多态绑定分两种情况,一种是静态绑定即编译时多态,一种是动态绑定即运行时多态所以说,为什么调用普通函数比调用虚函数的效率高?多继承的虚函数对象模型为什么要把基类的析构函数定义为虚函数?抽象类的应用原创 2017-09-17 14:28:01 · 740 阅读 · 0 评论