随笔分类 -  C/C++

摘要:n进制转十进制:a*n^y + b*n^(y-1) + ... + x*n^0十进制转n进制:除以n,取商和余......1 #include 2 3 void tobase(int, int); 4 int main() 5 { 6 tobase(33, 16); 7 return 0; 8 } 9 10 void tobase(int value, in... 阅读全文
posted @ 2016-08-08 16:50 balingybj
摘要:原型声明:extern char *strcpy(char *dest,const char *src);头文件:string.h功能:把从src地址开始且含有‘\0’结束符的字符串赋值到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符... 阅读全文
posted @ 2015-09-05 19:15 balingybj 阅读(920) 评论(0) 推荐(0)
摘要:原型 extern char *strcat(char *dest,char *src);用法 #include 功能 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。返回指向dest的指针。说明 src和dest所指内存区域不可以重叠且... 阅读全文
posted @ 2015-09-05 19:10 balingybj 阅读(5141) 评论(1) 推荐(1)
摘要:strstr函数:返回主串中子字符串的位置后的所有字符。#include const char *my_strstr(const char *str, const char *sub_str){ for(int i = 0; str[i] != '\0'; i++) { i... 阅读全文
posted @ 2015-09-05 18:54 balingybj 阅读(5414) 评论(0) 推荐(0)
摘要:1.函数指针——指针函数 函数指针的重点是指针。表示的是一个指针,它指向的是一个函数,例子: int (*pf)(); 指针函数的重点是函数。表示的是一个函数,它的返回值是指针。例子: int* fun(); 其实也可以通过运算符优先级来判断,()优先级比*优先级要高。 2.数组指针——指针数组 数 阅读全文
posted @ 2015-09-05 17:47 balingybj 阅读(2685) 评论(1) 推荐(0)
摘要:声明template参数时, 前缀关键字class和typename可以互换;使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用.从属名称(dependent names): 模板(template)内出现的名称, 相依于某个模板(template)参数, 如T... 阅读全文
posted @ 2015-09-04 23:53 balingybj
摘要:优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++... 阅读全文
posted @ 2015-09-04 13:12 balingybj 阅读(1056) 评论(5) 推荐(0)
摘要:位域 :有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每... 阅读全文
posted @ 2015-09-03 16:41 balingybj 阅读(22285) 评论(1) 推荐(2)
摘要:1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作,避免把类成员全部设置成public,最大限度的保护数据成员的安全。 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去... 阅读全文
posted @ 2015-09-02 12:34 balingybj 阅读(7715) 评论(0) 推荐(0)
摘要:指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。 ★ 相同点: 1. 都是地址的概念; 指针指向一块内存... 阅读全文
posted @ 2015-09-01 23:16 balingybj 阅读(776) 评论(1) 推荐(0)
摘要:如果函数已经被声明为inline,内联函数已经在编译期间它的调用点上就被展开;而虚拟函数调用的决定则要等到运行时刻在执行程序内部的每个调用点上系统根据被调用对象的实际基类或派生类的类型来决定选择哪一个虚拟函数实例.内联不是强制性的,你只是向编译器提出这个建议,允许它在可以内联的时候采取内联形式。而虚... 阅读全文
posted @ 2015-09-01 22:02 balingybj 阅读(1932) 评论(0) 推荐(0)
摘要:一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形式比较简单,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。// 运算符重载,这里又叫赋值函数string& operat... 阅读全文
posted @ 2015-08-31 13:12 balingybj 阅读(2167) 评论(0) 推荐(0)
摘要:一、纯虚函数定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个 阅读全文
posted @ 2015-08-30 22:49 balingybj 阅读(45778) 评论(1) 推荐(15)
摘要:就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。 一个定义为volatile的变量是说这变量可能... 阅读全文
posted @ 2015-08-30 22:27 balingybj 阅读(656) 评论(0) 推荐(0)
摘要:C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如in... 阅读全文
posted @ 2015-08-30 16:49 balingybj 阅读(3515) 评论(0) 推荐(0)
摘要:无论父类与子类的析构函数是否是virutal,子类的析构函数都会调用父类的析构函数 调用构造函数是与构造函数顺序相反,先子类后基类,否则如果基类先析构,子类的有些资源已经不存在了,会出错。 在C++中,类的成员变量的初始化顺序只与变量在类中的声明顺序有关,因为成员变量的初始化次序跟变量在内存中的次序 阅读全文
posted @ 2015-08-29 16:20 balingybj 阅读(305) 评论(0) 推荐(0)
摘要:昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下:class D{public: void printA() { coutprintA();d->printB();输出结果是?当时想的是对象d直接初始化为NULL,非虚的成员函数没有地址,应该找不到,而virt... 阅读全文
posted @ 2015-08-27 21:53 balingybj 阅读(1304) 评论(0) 推荐(0)
摘要:内联函数相对于宏的区别和优点:宏是在预处理时进行的机械替换,内联是在编译时进行的。内联函数是真正的函数,只是在调用时,没有调用开销,像宏一样进行展开。内联函数会进行参数匹配检查,相对于带参数的宏有很好的优点,避免了处理宏的一些问题。宏无法进行调试。inline1、产生背景写函数的好处:第一,它使程序... 阅读全文
posted @ 2015-08-27 21:43 balingybj 阅读(700) 评论(0) 推荐(0)
摘要:(一)为什么要用c++标准库里的排序函数Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!(二)c++标准库里的排序函数的使用方法I)... 阅读全文
posted @ 2015-08-27 09:48 balingybj 阅读(1414) 评论(0) 推荐(0)
摘要:为啥需要枚举类型编程语言中的所有特性都是为了满足某种需求,达到某个目的还出现.不会莫名其妙的出现在那.枚举可以用来保存一组属性的值.enum的全称是enumeration意思是列举看着这句话可能觉得太书面化了,不够通俗易懂.那举些通俗的例子说说.日常生活中我们特喜欢分类,比如读书时分啥数,理,化.当... 阅读全文
posted @ 2015-08-20 11:32 balingybj 阅读(1150) 评论(0) 推荐(0)