![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++函数知识
文章平均质量分 67
象耳山
这个作者很懒,什么都没留下…
展开
-
继承 基类和派生类指针
1,直接用基类指针引用基类对象2,直接用派生类指针引用派生类对象3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)4,用派生类指针引用基类的对象。这种引用方式会导致语法错误。派生类指针必须先强制转换为基类指针,这种方法转载 2015-08-25 22:02:46 · 593 阅读 · 0 评论 -
#ifndef 在头文件中的作用
#ifndef 在头文件中的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时 ,就会出现大量“重定义”的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。 方法:例如要编写头文件test.h 在头文件开头写上两行: #ifde转载 2015-08-22 10:29:46 · 613 阅读 · 0 评论 -
内存碎片和内存泄露
内存碎片:内存碎片的产生: 1.动态内存分配问题: 内存分配有静态分配和动态分配两种 静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎转载 2015-08-19 19:13:08 · 1330 阅读 · 0 评论 -
main() 参数:argc 与 argv
argc 执行此程序是输入的参数个数,argv[n] 指向输入的参数, argv[0] 指向可执行程序的名字或者存储目录,argv[1] -argv[n] 开始指向运行程序时,跟在程序后面的参数。对于理解argv[ ]函数很管用:123456789#inclu转载 2015-08-19 18:57:54 · 403 阅读 · 0 评论 -
函数重入
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其转载 2015-09-01 21:28:38 · 1040 阅读 · 0 评论 -
引用 和 指针
引用 和 指针 一:相同点: 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;二:不同点: 1. 指针是一个实体,而引用仅是个别名; 2.引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。 3.引用不能有NULL ,引用必须与合法的存储单元关联(指针则可以是NULL)。 4.一原创 2015-09-01 10:09:32 · 351 阅读 · 0 评论 -
New delete 和 malloc free的区别
New delete 和 malloc free的区别malloc/free New/delete 是c/c++的库函数 是C++的运算符返回指针是无类型 返回指针带有数据的类型对内部数据类型动态内存分原创 2015-09-01 10:03:01 · 321 阅读 · 0 评论 -
C++的头文件和实现文件分别写什么
C++的头文件和实现文件分别写什么在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析。于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念。对于以C起步,C#作为“母语”的我刚开始跟着导师学习C++对这方面还是感到很模糊。虽然我可以以C的知识面对C++的语法规范,用C#的思想领悟C++中类的使用转载 2015-08-29 14:38:33 · 393 阅读 · 0 评论 -
拷贝构造函数
类的拷贝构造函数class Cexample{Cexample(const Cexample & c){} };1.它是一个 构造函数!2.第一个默认的参数必须是 Cexample & 形式的;3.如果一个类中没有定义拷贝构造函数,那么编译器会自动产生一个默认的拷贝构造函数。这个默认的参数可能为 X::X(const X&)或 X::X(X&)原创 2015-08-29 21:14:03 · 330 阅读 · 0 评论 -
内联函数、宏
内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接呗镶嵌到目标代码中。内联函数要做参数类型检查,这是内联函数跟宏相比的优势。inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline更安全可靠。可是这个是以增加空间转载 2015-08-28 14:15:21 · 564 阅读 · 0 评论 -
全局变量、静态全局变量、静态局部变量和局部变量
变量的分类 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。按存储区域:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。按 作用域:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返转载 2015-08-28 15:01:30 · 549 阅读 · 0 评论 -
指针和引用的联系与区别
指针和引用的联系与区别 ★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;4. 引用没有 const,指针有 const;5. 引用不能为空,指针可以为空;6. “siz转载 2015-08-28 14:09:14 · 346 阅读 · 0 评论 -
C++输入函数 总结
cin<<的结束符有enter space tabcin.get()的结束符只有enter,但会把enter放入队列等待cin.getline()的结束符也只有enter,但不会把enter放入队列1.cin.getline():cin的getline需要这样用 cin.getline(s,50,'\n'); 或者 cin.getline(s,50);cin.getl转载 2015-08-26 21:48:03 · 418 阅读 · 0 评论 -
#define \const\ typedef
对宏的处理,在编译过程中称为“预处理”。也就是说在正式编译前,编译器必须先将代码出现的宏,用其相应的宏值替换,这个过程有点你我在文字处理软件中的查找替换。所以在代码中使用宏表达常数,归根结底还是使用了立即数,并没有明确指定这个量的类型。这容易带来一些问题,所以C++使用另一更稳妥的方法来代替宏的这一功能。const部分常量定义的格式为:const 数据类型 常量名 = 常量转载 2015-08-22 13:30:39 · 384 阅读 · 0 评论