c++
来自xinxin的我
这个作者很懒,什么都没留下…
展开
-
C++中引用概念
C++中引用概念前段时间在学习C++,学习到了引用的概念,当时也查了好多的资料,网上也有很多关于引用的帖子,多是引用和指针的关系,谭浩强C++中对引用的介绍也不是很多,今天把它们整理出来,相信也会对大家有所帮助,关于C++中其它的一些概念我也会持续更新中,大家可以多多关注下我的博客! 1、什么是“引用”?申明和使用“引用”要注意哪些问题?答:引用就是某个目标变量的转载 2013-09-12 07:59:06 · 874 阅读 · 0 评论 -
探秘C++机制的实现
我曾经自学过C++,现在回想起来,当时是什么都不懂。说不上能使用C++,倒是被C++牵着鼻子走了。高中搞NOIP并不允许使用STL库,比赛中C++面向对象的机制基本没有什么用武之地,所以高中搞NOIP名为用C++,其实就是c加上了cout和cin。 前几天看韩老师的《老码识途》,里面记录了一些C++面向对象机制的探索,又勾起了我的兴趣。而这个学期自学了汇编,又给了我自己动手探索提供了能力转载 2014-01-09 15:18:54 · 535 阅读 · 0 评论 -
解析C++中的内部连接与外部连接
在介绍C++中的内部连接与外部连接前,先说明一些概念。 1、声明 一个声明将一个名称引入一个作用域; 在c++中,在一个作用域中重复一个声明是合法的 以下都是声明:[cpp] view plaincopyint foo(int,int); //函数前置声明 typed转载 2014-01-22 07:54:46 · 507 阅读 · 0 评论 -
C++中的指针与引用(转载)
C++中的指针与引用2010-09-22 02:32 by 吴秦, 16229 阅读, 23 评论, 收藏, 编辑写在前面指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请转载 2014-01-16 21:23:54 · 519 阅读 · 0 评论 -
C++内存管理
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C转载 2014-01-28 00:22:38 · 502 阅读 · 0 评论 -
深入理解C语言指针的奥秘
深入理解C语言指针的奥秘 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞 清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的 值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一:(1)int*ptr; (2)char*ptr; (3)int转载 2014-01-28 00:30:03 · 553 阅读 · 0 评论 -
常见的C语言内存错误及对策
一、指针没有指向一块合法的内存定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存。浅显的例子就不举了,这里举几个比较隐蔽的例子。1、结构体成员指针未初始化struct student{ char *name; int score;}stu,*pstu;intmain(){ strcpy(stu.name,"Jimy");转载 2014-01-28 00:16:50 · 557 阅读 · 0 评论 -
彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
关于指针数组和数组指针要弄明白这两者的区别首先要知道()>[]>* 的优先级顺序。1:数组指针本质上是一个指针,而且是一个指向数组的指针(又称为行指针),在这声明一下数组指针是指向二维数组的,对于一维数组数组没有任何意义。指针数组本质是一个数组,它的目的把相同类型的指针统一放在一个数组里,与数组指针不同的是:指针数组既可以用在一维数组中也可以用在二维数组中。2:数组指针的声明方式为 int转载 2014-02-18 10:10:51 · 1181 阅读 · 0 评论 -
c++内存分布
对于一个完整的程序,在内存中分布情况如下图: 值得一提的是:在C#中struct存放在栈区,class存放在堆区,所以一般struct要比class要快的。 堆和栈的比较表(仅针对C++) 栈(Stack)堆(Heap)申请方式由OS自动分配。例如在函数声明转载 2014-03-03 22:14:30 · 563 阅读 · 0 评论 -
虚函数在对象中的内存布局
典型地,C++通过虚函数实现多态性。多态性的定义:“无论发送消息的对象属于什么类,他们均发送具有相同形式的消息,对消息的处理方式可能随接受消息的对象而变。”具体地说,“在某个基类上建立起来的类的层次结构中,可以对任何一个派生类的对象中的同名成员函数进行调用,而被调用的成员变量所提供的处理可以随其所属的类而改变。”虚函数首先是一种成员函数,它可以在该类的派生类中被重新定义并被赋予另外一种处理功能。转载 2014-03-03 22:16:59 · 574 阅读 · 0 评论 -
C++是如何利用虚函数实现多态性的?
还是先看示例程序,用代码说话:#include using namespace std;class A{public: inline virtual vfun() { cout }}; class B : public A{public: i转载 2014-03-03 22:18:36 · 802 阅读 · 0 评论 -
怎样获得虚函数指针
#include using namespace std; class A{private: int a; int b;public: virtual void vfun0() { cout "A::vfun0" }转载 2014-03-03 22:19:45 · 598 阅读 · 0 评论 -
c++多态实现的机制
1 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态。2 实现机制举一个例子:#include class animal{public:void sleep(){cout}void breathe(){cout}};转载 2014-03-04 10:24:50 · 568 阅读 · 0 评论 -
玄机逸士的专栏 对象内存布局 专题链接
玄机逸士的专栏 对象内存布局 专题链接对象内存布局 (1) http://blog.csdn.net/pathuang68/article/details/4101970对象内存布局 (2) http://blog.csdn.net/pathuang68/article/details/4101977对象内存布局 (3) http://blog.csdn.ne转载 2014-03-03 22:33:45 · 728 阅读 · 0 评论 -
数组作为参数传递的方式
在把数组作为参数传递给函数时,有值传递(byvalue)和地址传递(byreference)两种方式。 一值传递:在值传递方式中,要在数组参数的尾部加上一对方括号([]),调用函数时只需将数组的地址(即数组名)传递给函数。 例如:如果数组x被声明为:intx[10]; 那麽函数被说明为:void print_func(int[]); 参数转载 2014-01-09 08:16:42 · 3667 阅读 · 0 评论 -
静态链接库与动态链接库导出函数详解(本文系转载)
文章来源:http://hi.baidu.com/yueyemijing/blog/item/b0a3f500f932c181e850cd07.htmlMSDN资料:http://msdn.microsoft.com/zh-cn/library/d91k01sh(VS.80).aspxhttp://pcedu.pconline.com.cn/empolder/gj/vc/0509/69转载 2014-01-08 22:50:02 · 666 阅读 · 0 评论 -
C++引用的概念
C++引用的概念引用是C++中的概念,初学者容易把引用和指针混淆一起。 以下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m; n相当于m的别名(绰号),对n的任何操作就是对m的操作。 所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。 引用的规则: (1)引用被创建的同时转载 2013-09-12 08:07:24 · 530 阅读 · 0 评论 -
C++中的指针与引用
C++中的指针与引用2010-09-22 02:32 by 吴秦, 16229 阅读, 23 评论, 收藏, 编辑写在前面指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请转载 2013-09-12 07:39:43 · 552 阅读 · 0 评论 -
c++ algorithm 泛型算法的方法实现原型
// algorithm standard header#pragma once#ifndef _ALGORITHM_#define _ALGORITHM_#ifndef RC_INVOKED#include #pragma pack(push,_CRT_PACKING) #pragma warning(push,3) #pragma warning(di原创 2013-09-25 07:51:28 · 1011 阅读 · 0 评论 -
c++ 泛型算法 numeric方法实现原型
// numeric standard header#pragma once#ifndef _NUMERIC_#define _NUMERIC_#ifndef RC_INVOKED#include #pragma pack(push,_CRT_PACKING) #pragma warning(push,3)_STD_BEGIN// TEMPLATE F原创 2013-09-25 07:48:24 · 623 阅读 · 0 评论 -
C++虚函数带有默认参数的问题
#include #include //using namespace std;class Base{public: virtual void display(const std::string& strShow = "I am Base class !") { std::cout std::cout } vi原创 2014-01-06 22:31:08 · 772 阅读 · 0 评论 -
深入理解C++的动态绑定和静态绑定
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:[cpp] vi转载 2014-01-06 22:35:28 · 539 阅读 · 0 评论 -
传递动态内存
传递动态内存 当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番.现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码.【引入】 看下面的例子,这是我们在编写库函数转载 2014-01-09 08:12:36 · 685 阅读 · 2 评论 -
常见的C语言内存错误及对策
一、指针没有指向一块合法的内存定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存。浅显的例子就不举了,这里举几个比较隐蔽的例子。1、结构体成员指针未初始化struct student{ char *name; int score;}stu,*pstu;intmain(){ strcpy(stu.name,"Jimy");转载 2014-01-09 08:10:54 · 829 阅读 · 4 评论 -
函数返回的原理
函数返回的原理比如:int foo(int i){ int p=i*2; return p;}main(){ int k; int s=2; k=foo(s);}整个程序是这样进行的:首先s的值2被复制入栈,然后进入函数foo,局部i就是在栈中的那个,i*2的值被存入临时变量,然后通过"="号,临时变量的值复制到局转载 2014-01-09 08:13:59 · 867 阅读 · 0 评论 -
函数返回值
重点:一个函数最终只能有一个返回对象(数字,指针……)但是函数可以通过返回一个指针来返回多个数据例子:structStu{ char *name; char *sex; int age;}; Stuinfo(){ Stu s; s.name = "gao"; s.sex ="m"; s.age =转载 2014-01-09 08:15:31 · 553 阅读 · 0 评论 -
DLL动态库,LIB静态库
1,是什么动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。静态链接库就是你使用的.lib文件,库中的代码最后需要连接到你的可执行文件中去,所以静态连接的可执行文件一般比较大一些。 2,为什么(A)动态链接库优点:1、扩展了应用程序的特性;2、可以用许多种编程语言来原创 2014-01-08 22:06:07 · 731 阅读 · 0 评论 -
函数调用约定
函数调用约定原创 2014-01-08 22:21:39 · 832 阅读 · 0 评论 -
编译器的函数名修饰规则
函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指定函数的名字修饰,例如在C++程序中,为了让LINK程序或其他工具能够匹配到正确的函数名字,就必须为重载函数和一些转载 2014-01-08 22:37:10 · 834 阅读 · 0 评论 -
如何区分声明和定义?
"声明"的严谨C++语意,是用以告诉编译器类型及其细节,例如:class Test{ //数据成员细节... //成员函数细节...};上述声明仅告诉编译器有自定义类型fish6344,编译器仅对其进行语法分析及名字的决议,并无内存实际占有!"定义"的严谨C++语意,即内存占有,编译器将在相对内存地址上为其对象定址!要注意的是,我们不能简单的说:原创 2015-04-13 09:44:02 · 442 阅读 · 0 评论