![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
yiwanyuan2756
这个作者很懒,什么都没留下…
展开
-
关于malloc和free函数的用法
转 关于malloc和free函数的用法 2014年02月06日 20:32:18 阅读数:946 本文转载于:http://blog.pfan.cn/vfdff/33507.html 个人总结 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对...转载 2018-05-22 21:52:33 · 1727 阅读 · 0 评论 -
存储区
一.在c中分为这几个存储区1.栈 - 有编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的>另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。 - 程序结束释放二.在C++中,内存分成5个区,他们...转载 2018-06-08 20:39:21 · 390 阅读 · 0 评论 -
C++虚函数表剖析
关键词:虚函数,虚表,虚表指针,动态绑定,多态一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。 我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包...转载 2018-05-24 19:25:44 · 143 阅读 · 0 评论 -
深入剖析C++多态、VPTR指针、虚函数表
在讲多态之前,我们先来说说关于多态的一个基石------类型兼容性原则。一、背景知识 1.类型兼容性原则 类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容规则中所指的替代包括以下情况: 子类对象可...转载 2018-05-24 18:45:48 · 319 阅读 · 0 评论 -
C++中的继承(1) 三种继承方式
1、继承与派生 继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一。简单的说,继承是指一个对象直接使用另一对象的属性和方法。继承呈现了 面向对象程序设 计的层次结构, 体现了 由简单到复杂的认知过程。C++中的继承关系就好比现实生活中的父子关系,继承一笔财产比白手起家要容易得多,原始类称为基类,继承类称为派生类,它们是类似于父亲和儿子的关系,所以也分别叫父类和子类。而子类又可...转载 2018-05-24 17:34:30 · 453 阅读 · 0 评论 -
C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为 const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);唯一的例外是对于 mutable修饰的成员。加了const的成员函数可以被非const对象和const对象调用,但不加const的成员函数只能被非const对...转载 2018-05-24 20:52:32 · 947 阅读 · 0 评论 -
C++之friend友元类和友元函数
将数据和处理数据的函数封装在一起,构成类,实现了数据的隐藏,无疑是面向对象程序设计的一大优点。但是有时候封装不是绝对的。友元函数提供了不同类或对象的成员函数之间、类的成员函数和一般函数之间进行数据共享的机制。通俗的说,友元关系就是一个类主动声明哪些类或函数是它的朋友,进而给它们提供对本类的访问特性。也就是说,通过友元关系,一个普通函数或者类的成员函数可以访问封装于另外一个类中的数据。从一定程度上讲...转载 2018-05-24 17:16:26 · 1414 阅读 · 0 评论 -
C++(笔记)浅谈protected
一个类使用protected关键字来声明是希望与派生类分享但是不想被其他公共访问使用的成员。所以protected可以看做public和private的中间产物解析protected1.类似于私有成员,受保护的成员对于类的用户(类的用户即类的对象)来说是不可访问的,也就是说可以通过类的成员函数访问而不能通过类的对象来访问 2.类似于公有成员,受保护的成员对于派生类的成员和友元来说是可访问的,而pr...转载 2018-05-24 17:11:48 · 274 阅读 · 0 评论 -
关于函数返回值的几种情况
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。 1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a; 那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。 2. 但是对于非动态分配(new/malloc)得到的指针,像1...转载 2018-05-23 23:02:31 · 1053 阅读 · 0 评论 -
c++,类的对象作为形参时一定会调用复制构造函数吗?
c++,类的对象作为形参时一定会调用复制构造函数吗?答:如果参数是引用传递,则不会调用任何构造函数;如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在,函数执行结束之后调用析构函数。如果类中没有定义复制构造函数 那对象就不能作为形参?答:如果没有定义,编译器会自动为你定义一个,编译器自己定义的复制构造函数是按类成员变量的值复制的。有几个成员变量就重新创...转载 2018-05-23 22:14:10 · 3542 阅读 · 0 评论 -
string 与char* char[]区别及转化
一、定义string:string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,不能将st...转载 2018-05-23 14:37:18 · 864 阅读 · 0 评论 -
char *s="string"和char s[]="string"的区别
char *s="string"的内容是不可以改的void main(){ char* pStr1 = "Hello!"; char pStr2[] = "Hello!"; change(pStr1); change(pStr2);}void change(char* pInstr){ pInstr[0]='O';}两种change编译都可以通过,但发现第二个chan...转载 2018-05-23 14:28:09 · 1949 阅读 · 0 评论 -
malloc()函数的类型(void *)的类型转换问题
1、用malloc函数申请空间: 例如: int len = 100; 用int p = (int )malloc(len * sizeof(int)) 或者: int p = malloc(len sizeof(int)) 请问int 必须加吗? 不加也可以运行程序的, 而且有时候连warnning 都没有啊, 那个Int是什么意思? 返回的不就是地址吗, 而P也是...转载 2018-05-22 21:53:18 · 7486 阅读 · 0 评论