C++
DennyZhu0912
多读书,多运动,多blog,这很酷耶!
欢迎大家交流技术,邮箱:[email protected]
展开
-
C,C++宏中#与##的讲解
文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。 如定义好#define STRING(x) #x之后,下面二条语句就等价。 char *pChar = "hello";转载 2013-12-10 22:49:25 · 569 阅读 · 0 评论 -
qsort与sort的区别
sort默认的是升序排序(return a qsort使用return *(int*)a-*(int*)b 是从小到大 1.cmp函数和qsort中cmp函数的不同 int cmp(const int &a,const int &b) { return a>b } Sort中的cmp函数参数可以直接是参与比较的引用类型。 2.cmp转载 2015-04-09 10:29:54 · 821 阅读 · 0 评论 -
C++进阶之虚函数表
C++通过继承(inheritance)和虚函数(virtual function)来实现多态性。所谓多态,简单地说就是,将基类的指针或引用绑定到子类的实例,然后通过基类的指针或引用调用实际子类的成员函数(虚函数)。本文将介绍单继承、多重继承下虚函数的实现机制。 一、虚函数表 为了支持虚函数机制,编译器为每一个拥有虚函数的类的实例创建了一个虚函数表(virtual table)转载 2015-04-07 16:18:08 · 378 阅读 · 0 评论 -
C++父类与子类关系以及函数重载、覆盖和隐藏规则
今天去HTC面试,笔试考了逻辑、c语言、c++语言几个部分,C/C++考的全是基本语法,没有考算法。C语言部分做的还不错,C++部分却做的那么多不确定,其中大部分是C++父子类之间关系以及函数重载、覆盖以及隐藏规则。 在C++语言中,虚函数是非常重要的概念,虚函数是实现C++面向对象中多态性和继承性的基石。而多态性和继承性则是面向对象语言的精髓。掌握虚函数才算是真正掌握C++语言,而C++语言中转载 2015-04-02 11:00:40 · 576 阅读 · 0 评论 -
有了malloc/free 为什么还要new/delete
有了malloc/free 为什么还要new/delete ? malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可 用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象 在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于 malloc/free 是库转载 2015-03-31 12:53:40 · 432 阅读 · 0 评论 -
C/C++关于全局变量和局部变量初始化与不初始化的区别
原文链接:http://www.kingofcoders.com/viewNews.php?type=newsCpp&id=189&number=4836955386 在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下: 编转载 2015-03-23 11:47:01 · 4160 阅读 · 0 评论 -
C++虚函数及虚函数表解析
原文链接:http://www.keepsimply.org/2012/07/11/cpp-vtable/ 作者:独酌逸醉 时间:2012.07.11 声明: 本文内容由自互联网资源(见参考资料)、个人的一些 C++ 学习感悟、个人实践整理而成。文章仅以技术学习和交流为目的。如果您发现了文中的错误,或者您有的不同的见解,可以给我留言或者给我发邮件,我们共同探 讨。如果您转载 2015-03-29 12:02:14 · 417 阅读 · 0 评论 -
对字符串常量 的理解
常量存储总结 局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区 1、局部变量存储在栈中 2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区 3、new申请的内存是在堆中 4、字符串常量也是存储在静态存储区 补充说明: 1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结转载 2015-03-30 13:55:35 · 495 阅读 · 0 评论 -
C\C++关于string.h头文件和string类 using namespace std
#include void main() { string aaa = " abcsd d " ; printf( " looking for abc from abcdecd %s\n " , (strcmp(aaa, " abc " )) ? " Found " : " Not Found " ); } 不能正确执行,提示说是string类型没有定义转载 2015-03-06 21:49:11 · 459 阅读 · 0 评论 -
拷贝构造函数和赋值构造函数的异同
由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”(即浅拷贝,值拷贝即深拷贝)的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String 的两个对象a,b 为例,假设a.m_data 的内容为“hello”,b.m_data转载 2015-03-19 16:06:01 · 535 阅读 · 1 评论 -
拷贝构造函数
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: [c-sharp] view plaincopy int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。转载 2015-03-19 15:15:48 · 422 阅读 · 0 评论 -
C++中复制构造函数与重载赋值操作符总结
前言 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 复制构造函数和重载赋值操作符的定义;复制构造函数和重载赋值操作符的调用时机;复制构造函数和重载赋值操作符的实现要点;复制构造函数的一些细节。 复制构造函数和重载赋值操作符的定义 我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数、析构函数、复制构造函数和重载赋值操作;即使在你没有明确定转载 2015-03-19 15:46:38 · 369 阅读 · 0 评论 -
C代码中如何调用C++ C++中如何调用C
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译、调用协议等。 使用extern "C" 主要是因为C编译器编译函数时不带参数的类型信息,只包含函数的符号名字。如 int foo( float x ) C编译器会将此函数编译成类似_foo转载 2015-03-19 13:49:51 · 386 阅读 · 0 评论 -
C++内存分配方式详解
整个系统的内存分为:系统代码、系统数据区,应用代码、应用数据区。 其中可编程内存包括:应用代码和应用数据区。 一个由C/C++编译的程序占用的内存分为以下几个部分 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样转载 2015-03-15 20:25:25 · 493 阅读 · 0 评论 -
inline函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int first, int secend) {/****/}; inline函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。与非inline 函数不同的是,转载 2015-03-15 19:21:45 · 436 阅读 · 0 评论 -
static用法小结
static用法小结 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 下面就这三种使用方式及注意事项分别说明 一、局部静态变量 在C/C++中, 局部变量按照存储转载 2015-03-15 18:59:01 · 347 阅读 · 0 评论