
C++
hwlfly
这个作者很懒,什么都没留下…
展开
-
C++父类与子类关系以及函数重载、覆盖和隐藏规则
转自:http://blog.youkuaiyun.com/xingyu19871124/article/details/7640131在C++语言中,虚函数是非常重要的概念,虚函数是实现C++面向对象中多态性和继承性的基石。而多态性和继承性则是面向对象语言的精髓。掌握虚函数才算是真正掌握C++语言,而C++语言中虚函数的继承覆盖与函数重载有些类似,很多初学者搞不清他们之间的关系。首先要明确覆盖(ov转载 2014-01-15 17:40:37 · 922 阅读 · 0 评论 -
C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 全局变量、局部变量、静态全局变量、静态局部变量的区别 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,转载 2014-03-11 12:33:07 · 9456 阅读 · 0 评论 -
深入理解双指针
转载:http://blog.youkuaiyun.com/feiyinzilgd/archive/2010/02/09/5302369.aspx对于C语言的参数传递都是值传递,当传传递一个指针给函数的时,其实质上还是值传递,除非使用双指针。 在讲双指针之前,还是先讲讲关于C语言函数调用的本质。函 数调用操作包括从一块代码到另一块代码之间的双向数据传递和执行控制转移。数据传递通转载 2014-03-12 10:32:17 · 2693 阅读 · 0 评论 -
C++宏和内联函数
C++内联函数 宏:就是使用一个字符串来代替一个表达式大妈或函数调用代码;编译之前,预处理器会使用这个宏字符串所代表的表达式代码或函数调用代码来替换所有出现的宏字符串,这样的话,用宏表示的函数调用代码就不用另外开辟函数栈,不用保护和恢复函数调用现场,这样就提高了代码的执行效率;所以,调用一个宏比调用一个函数更有效;但是调用宏的时候,有一个缺点:由于宏在预处理时使用的是宏字符串替换转载 2014-03-17 21:27:50 · 815 阅读 · 0 评论 -
dynamic_cast
dynamic_cast ( expression )该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void*;如果type-id是类指针类型,那么expression也必须是一个指针;如果type-id是一个引用,那么expression也必须是一个引用;dynamic_cast运算符可以在执行期决定真正的类型。原创 2014-03-24 10:59:37 · 837 阅读 · 0 评论 -
strlen 和sizeof
先看下面的程序int main(){ char *ch = "hwlhwl"; char ch1[] = "hwlhwl"; unsigned int a = sizeof(ch); unsigned int b = strlen(ch); unsigned int c = sizeof(ch1); unsigned int d = strlen(ch1); cout<<a<<e原创 2014-03-25 22:08:23 · 1033 阅读 · 0 评论 -
C++ 内存分配知识:全局,局部,静态变量
转自: http://www.cnblogs.com/netlyf/archive/2009/12/15/1624456.html预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放,转载 2014-03-26 11:00:43 · 2265 阅读 · 0 评论 -
C++ 虚函数表解析
转自:前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于转载 2014-06-24 11:41:19 · 617 阅读 · 0 评论 -
C++ static、const和static const 以及它们的初始化
const定义的常量在函数执行之后其空间会被释放,而static定义的静态常量在函数执行后不会被释放其空间。static 表示的是静态的。类的静态成员函数,成员变量是和类相关的,不是和类的具体对象相关,即使没有具体的对象,也能调用类的静态成员函数,成员变量。一般的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。 在c++中,static静态成员变量不能在类转载 2014-06-11 18:54:08 · 1399 阅读 · 0 评论 -
C++编译器合成默认构造函数的条件(合成默认拷贝构造函数雷同)
C++编译器合成默认构造函数的条件原创 2014-08-03 11:44:54 · 1461 阅读 · 0 评论 -
strcpy函数和string类的实现
1 strcpy函数实现void* memcpy1(void *dst,const void *src,int count){ assert(dst != NULL && src!= NULL && count>=0); void *temp = dst; char *pdst = (char*)dst; char *psrc = (char*)src; if(pdst>=psrc原创 2014-09-18 09:28:29 · 2267 阅读 · 0 评论 -
字符数组,字符指针,sizeof,strlen总结
先看下面这一段代码,读者可以自己思考一下,是否自己可以完全答对// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include#include using namespace std;struct{ short a1;转载 2014-08-21 11:41:06 · 729 阅读 · 0 评论 -
c++ 内存对齐
首先由一个程序引入话题: 1 //环境:vc6 + windows sp2 2 //程序1 3 #include 4 5 using namespace std; 6 7 struct st1 8 { 9 char a ;10 int b ;11 short c ;12 };13 14 struct st2转载 2014-09-16 20:21:40 · 737 阅读 · 0 评论 -
C中的Float分析
我两年前就知道不应该用==号来判断浮点数的相等了,因为存在一个精度的问题,但是一直以来,都没怎么在乎这些东西,而实际上,我对于浮点数的结 构,虽然了解,但并不清晰. 作为一个C++爱好者,应该尽量搞清楚每一个问题,所以我搞清楚了浮点数的内在表示及实现.在没有大问题的情况下,一切以易于理解和记忆为标准.首先说一下原,反,补,移码. 移码其实就等于补码,只是符号相反. 对于正数而言,原,反,补码都转载 2014-10-05 12:10:12 · 827 阅读 · 0 评论 -
C++中delete和delete [] 的区别
我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a; //方式1delete [] a; //方式2肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?转载 2014-10-08 21:50:03 · 2415 阅读 · 0 评论 -
C++字符类型TCHAR、char和wchar_t
1、首先,char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。2、wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式,wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码。unicode编码的字符一般以wchar_t类型存储。3、wchar_t数据类型一般为16位或32位,但不同的C或C原创 2014-03-04 09:44:06 · 22406 阅读 · 2 评论 -
C++静态成员变量的初始化
需要注意的是:静态数据成员不能在类中初始化,一般在类外和main()函数之前初始化,缺省时初始化为0。1.static成员的所有者是类本身,但是多个对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其进行初始化。2.静态成员不能在类定义里边初始化,只能在class body外初始化。3.静态成员仍然遵循public,private,protected访问准则。4.静原创 2014-03-03 16:53:37 · 39817 阅读 · 9 评论 -
C++整型和字符串转换
1、itoa 功 能:把一整数转换为字符串 用 法:char * itoa(int value, char *string, int radix); 详细解释: itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: value: 待转化的整数。原创 2014-03-03 21:56:42 · 2153 阅读 · 0 评论 -
C++句柄的理解
通俗的讲,c++句柄就像一个“复合指针”:它不但“指向”某个对象,还“记录”所指对象由于复制/赋值而被其他句柄拥有的次数。当没有句柄与次对象关联的时候,他还负责删除该对象。泛型句柄类:templateclass Handel{public: Handle(T *p = 0):ptr(p),use(new size_t(1)){} T& operator*(){ if(ptr原创 2014-01-16 16:17:21 · 2756 阅读 · 0 评论 -
c++构造函数的初始化列表
c++中必须在构造函数初始化列表中进行初始化的类成员有3中情况:1.引用/const类型的成员,如下:class A{public: A(int a = 0,int b = 0):m_item1(a),m_item2(b){}//必须在初始化列表中进行初始化,没有默认构造函数private: const int m_item1; int &m_item2;};2.没有默原创 2014-01-16 21:24:29 · 697 阅读 · 0 评论 -
C++泛型算法
目录(?)[+]本文主要讨论C++标准库中的泛型算法(generic algorithm)。泛型算法是使用容器的强有力的辅助工具。 如果文中有错误或遗漏之处,敬请指出,谢谢! 标准库为容器类型定义的操作很少,并没有为每个容器实现更多的操作。因为这部分操作可以抽象出来为所有的容器工作,那就是泛型算法。所谓“泛型”是指这些算法可以应用于多种容器类型上,而容器内的转载 2014-02-23 14:59:46 · 764 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系转自:http://www.cnblogs.com/carekee/articles/1630789.html一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字转载 2014-02-23 11:22:34 · 664 阅读 · 0 评论 -
c++ 字符类型总结区别wchar_t,char,WCHAR
1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。 UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里: typedef unsigned short wchar_t; 另外,在头文件中有这样的定义:typedef转载 2014-02-24 09:38:25 · 2264 阅读 · 0 评论 -
C++IO对象不可复制或赋值
IO类型的3个独立的头文件:iostream定义读写控制窗口的类型,fstream 定义读写已命名文件的类型, (包含fstream类)sstream定义读写存储在内存中的string对象。(包含了stringstream类)IO类型不可复制或赋值因此,IO类型不可存储在vector容器中。(IO是流对象,而流对象是不能复制的转载 2014-02-24 09:45:25 · 3356 阅读 · 1 评论 -
C++中cout和cerr的区别
转自:http://blog.youkuaiyun.com/garfield2005/article/details/7639833之前一直在用,但就是没在意两者到底有啥却别,今天又想到这个问题,总结下吧(以下的内容均是本人从网上查阅资料看来整理的,暂时还没有查阅官方资料,不保证准确,欢迎讨论)其实大家平常常会用的主要有三个:cout、cerr、clog,首先简单介绍下三者。这三者在C转载 2014-02-24 10:29:12 · 5849 阅读 · 0 评论 -
C++基类的析构函数为什么设置成虚函数
C++的多态性在析构函数上也同样适用,看下面例子;class A{public: A(){cout<<"A()"<<endl;}; ~A(){cout<<"~A()"<<endl;};};class B:public A{public: B(){cout<<"B()"<<endl;}; ~B(){cout<<"~B()"<<endl;};};int main(){ A*原创 2014-02-10 16:03:16 · 1131 阅读 · 0 评论 -
模板与泛型编程
模板是C++一个非常重要的特性,它是C++泛型编程的基础。C++引入模板的一个重要原因是算法的重用。一、函数模板1.定义函数模板(1)定义模板类型形参templateint comp(const T &v1,const T &v2){//比较两个变量的大小的函数模板 if(v1<v2) return -1; if(v2<v1) return 1; return原创 2014-02-11 16:00:40 · 852 阅读 · 0 评论 -
C++复制构造函数和赋值操作符的区别
赋值运算符(注意,不是“赋值构造函数”)和拷贝构造函数都是用已有的对象来创建另一个对象。不同之处在于:拷贝构造函数是生成一个全新的对象,即A a (b);//这才是C++风格的初始化 A a = b;//注意,这种风格只是为了与C兼容 在这之前a对象是不存在的,或者说还没有构造好。 赋值operator =()是两个对象都已经构造好的情况下使用的。即 a = b原创 2013-12-26 20:20:08 · 740 阅读 · 0 评论 -
再谈string类型
string类型也是在标准库中定义的,可以看做特殊的容器,除了一些特殊的操作外,string类型提供与vector相同的操作。同时他还有自己独有的操作,这里只介绍string所独有的操作。与vector不同的是:string不能使用front、back和pop_back操作。1、string的构造方法/******************************/string s1;s原创 2014-02-13 10:56:45 · 1088 阅读 · 1 评论 -
MATLAB函数imfeature()和bwlabel()
1、M = bwlabel(BW,n)返回一个和BW(一般是经过膨胀操作的逻辑矩阵)大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。四连通或八连通是图像处理里的基本感念:而8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连原创 2014-02-18 15:10:08 · 3083 阅读 · 0 评论 -
C++ 顺序容器总结
标准库定义了3中顺序容器:vector、list、deque一、顺序容器的定义#include #include #include vector ivec;list ilist;1、顺序容器的初始化C c;-----创建一个空容器---------------------------------------------------------------------原创 2014-02-12 15:10:48 · 1305 阅读 · 0 评论 -
C++ 关联容器总结
关联容器关联容器共享大部分——但不是全部——顺序容器的操作。关联容器不提供front, push_front, pop_front, back, push_back, pop_back等操作。1、关联容器的类型(1)map定义的类型:map::key_type; //键的类型 const stringmap::mapped_type; //值得类型 Intmap::value原创 2014-02-19 20:02:36 · 1259 阅读 · 0 评论 -
C++之常量(一)
1概述一个C++程序就是一系列数据与操作的集合。当一个C++程序开始运行的时候,与该程序相关的数据就会被加载到内存中。当数据与内存发生关联的时候,这些数据就会具有如下的特性:数据在内存中的地址。这个地址决定了数据在内存中的存储位置。在32位的系统中,每一个C++程序都具有4GB大小的内存地址空间,这个4GB大小的内存空间又被划分为若干个区域,如:栈区,堆区,全局(静态)区,文字常量转载 2014-10-09 10:17:19 · 786 阅读 · 0 评论