C++
zhuhuiyu_
一个在努力中的程序员!!!加油!!
展开
-
面向过程处理机制VS面向对象处理机制
面向过程处理机制就是把要实现的功能分为一步一步,也就是一个个函数。先做**,再做**,然后是**,最后是**。每一步非常具体,完成了所有步也就实现了这个功能。也就是实现原理。面向对象处理机制就是将要解决的问题分解成各个对象,不是为了实现每个步骤,而是描叙某个事物在整个解决问题的步骤中的行为。一个对象是个方法面面的系统,也就是实现效果。看到一个特别清楚的例子区原创 2016-07-11 16:26:26 · 651 阅读 · 0 评论 -
C++知识点7
1. string类的每个对象,大小都是4个字节,因为这个对象是字符串的的首地址,也就是一个指针。2. string对象的大小比较:从头开始,出现一个字母大小有差别就按照这个大小判断。3. new 和 delete :new int(100); 开辟一个存放整数的空间,并且指定该值的初值为100。4. delete:delete p(释放一个变量原创 2017-02-24 21:57:20 · 260 阅读 · 0 评论 -
C++知识点18
1. 常对象:常对象只是保证其中的数据成员不被修改,而不代表常对象中的成员函数也都是常成员函数,不加const修饰,成员函数就还是非const成员函数。常成员函数不能调用另一个非常成员函数。2. 指向对象的常指针:初始化以后,至始至终都指向同一个对象,并且不能被修改,但是能够修改该对象中的成员变量。3. 常变量和常指针:对于常变量,只能用常指针指向它。原创 2017-03-07 23:28:45 · 222 阅读 · 0 评论 -
C++知识点8
1. string类的每个对象,大小都是4个字节,因为这个对象是字符串的的首地址,也就是一个指针。2. string对象的大小比较:从头开始,出现一个字母大小有差别就按照这个大小判断。3. new 和 delete :new int(100); 开辟一个存放整数的空间,并且指定该值的初值为100。4. delete:delete p(释放一个变量原创 2017-02-25 22:17:04 · 291 阅读 · 0 评论 -
C++知识点19
1. 常指针:常指针可以指向常变量或者非常变量,那么指向非常变量时,就不允许使用常指针对这个变量进行修改。2. 对于函数的形参:必须保证形参的要求高于或者等于实参的要求。也就是实参为常变量的话,那么形参必须为常变量,才能传入;非常变量的实参可以传给const或者非const的形参。总结一下,就是必须保证形参比实参苛刻,越苛刻就是越加const。详见 C++教科书P93表格。原创 2017-03-08 19:11:11 · 398 阅读 · 0 评论 -
C++知识点9
1. 类是对象的抽象,而对象是类的具体实例。2. 类的成员属性:默认的成员属性是私有的(缺省时)。3. 类和结构体的异同:struct的类成员,如果不做声明,那么默认是public的,而class则默认的是private的。4. 内联函数:如果内联函数的定义在类外,那么就需要显式的声明。Inline void display(); 类外:in原创 2017-02-26 19:35:21 · 243 阅读 · 0 评论 -
C++知识点16
1. 常对象:常对象不能调用该对象的非const型成员函数。2. 常成员函数:void get_time() const;这样就声明为常成员函数了。3. 使用常成员函数修改常对象的变量:提供了mutable int count;就可以使用常成员函数对常对象的变量进行修改。4. 常数据成员的初始化:必须使用Time::Time(int h):hou原创 2017-03-05 22:36:02 · 263 阅读 · 0 评论 -
C++知识点20
1. 指向常对象的常指针变量:Time * const p;2. 指向常对象的指针变量:const Time *p;不能通过p来改变对象的成员数据Time const t1 / const Time t1t1是常对象,任何情况下不被改变void Time::func() const;func是常成员函数,可以引原创 2017-03-09 22:42:38 · 361 阅读 · 0 评论 -
C++知识点10
1. 一般函数和类函数作为内联函数的区别:一般函数只要在声明或者定义时,作inline声明就可以了;而类函数就需要将类定义和成员函数的定义必须都放在同一个头文件中。2. 对象的存储空间:一个对象的存储空间大小就是成员中的数据大小,不包括其中的成员函数代码部分,不论该成员函数定义在类内还是类外,这也适用于inline内联函数,不管内联函数还是普通类方法,都不占用对象的存储空间原创 2017-02-27 18:11:59 · 234 阅读 · 0 评论 -
C++知识点17
1. 非常成员函数:可以引用常数据成员,但是不能修改;不能引用常对象的数据成员。2. 常数据成员、常成员函数、常对象:1)非成员函数可以引用常数据成员,并对非常数据成员进行修改。2)如果要求所有的成员数据成员都不允许改变,那么可以全部声明为常数据成员,或者直接声明为常对象,并且使用常成员函数进行引用,确保不修改数据成员。3)对于常对象:只能使用常成员函数进行成员数据访问,不原创 2017-03-06 22:57:22 · 469 阅读 · 0 评论 -
C++知识点21
1. 动态分配空间:Box *pt = new Box; 或者可以直接 = new Box(12,30,14);进行对象的初始化。2. 对象的赋值和复制:赋值:对已有的对象进行相互的赋值;赋值:从无到有的建立一个对象 Box b1(b2); 或者 Box b1 = b2;3. 静态数据成员:每个对象都共同拥有这个数据成员,而且在还没有创建对象实例的时候,这个静原创 2017-03-10 16:49:46 · 273 阅读 · 0 评论 -
C++知识点22
1. 静态数据成员初始化:只能在类体外初始化,int Box::height = 10;,并且不能使用参数初始化表对静态数据成员进行初始化。 如果在类外使用非私有的静态数据成员时,格式为 Box::height,因为静态数据成员不属于某一个对象。2. 静态成员函数:因为它不属于某一个对象,所以它没有this指针,也不能引用非静态的数据成员,静态成员函数主要用来访问静态数原创 2017-03-11 22:45:01 · 355 阅读 · 0 评论 -
C++知识点14
1. 析构函数的调用:是在函数执行完毕之后调用还是执行完毕之前就调用?2. 普通函数的函数名:即为该函数的入口地址?29点中的为什么要取地址?(答:C语言)3. 指向对象成员函数的方法:1)函数参数的类型和参数的个数需要相同。2)函数返回值的类型相同。3)所属的类相同。原创 2017-03-03 20:07:58 · 236 阅读 · 0 评论 -
C++知识点6
1. 使用::a,可以访问全局变量a。2. 字符串变量:头文件#include string str = “China”; str[3] = ‘N’; 则str = “ChiNa”; 而且字符串结尾不是’\0’。3. string类与字符串数组的区别:字符串数组的运算要用strcat strcmp等,而string类不需要这些,直接可以用简单的运算符原创 2017-02-23 20:49:54 · 217 阅读 · 0 评论 -
C++知识点13
1. 无参构造函数:Box box1;而不要写成Box box1(); 默认的构造函数时不加括号的。2. 使用默认参数的构造函数:声明Box(int h = 10,int w = 10,int len = 10); 定义时可以不用再指定默认的参数。这带来的问题就是,会出现无参构造函数和默认参数构造函数的歧义,如果调用时,不给出特定的值,那么到底是调用哪一个构造函数呢?这就原创 2017-03-02 20:05:18 · 265 阅读 · 0 评论 -
C++ 重载==,使用栈的非递归算法
题目成员函数,使用栈的非递归算法,其他成员函数(构造或遍历)采用递归算法6-12 bool operator==(BinaryTree &bitree)//重载==,比较两棵二叉树是否相等实验原始纪录template class T>bool BinaryTree::operator==(BinaryTree &bitree)//重载==,比较两棵二叉树是否相等原创 2016-06-14 16:57:07 · 519 阅读 · 0 评论 -
C++ 二叉树(三叉链表存储)不使用栈的非递归算法
题目.二叉树(三叉链表存储) 二叉树的成员函数,不使用栈的非递归算法(迭代) 1.BinaryTree(T prelist[], int n)以标明空子树的先根序列构造二叉树(不使用栈的非递归算法) 2.BinaryTree(BinaryTree &bitree)深拷贝,不使用栈的非递归算法。template原创 2016-06-14 17:06:38 · 1457 阅读 · 0 评论 -
C++ new VS malloc 区别
C语言使用malloc动态分配空间,C++使用new动态分配空间,功能是差不多的,但他们的区别还是很大的。1 new 关键字是C++的一部分,malloc是由C语言库提供的函数2 new以具体类型为单位进行内存分配,malloc只以字节为单位进行内存分配3 new在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特征(使用memset函数初始化)原创 2017-02-09 11:12:46 · 421 阅读 · 0 评论 -
C++ 引用 VS 指针 区别
引用相当于起别名,可以作为形参和返回值,在定义的时候必须初始化。引用和指针的区别1 引用访问一个变量是直接访问,而指针是间接访问。2 引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间3 引用一经初始化不能再引用其他变量,而指针可以4 指针比较危险,可能会有野指针造成内存泄漏等问题,所以最好使用引用。原创 2017-02-09 12:27:28 · 743 阅读 · 0 评论 -
C++知识点1
1. 设置输出数据宽度,使用头文件中的setw(n),来设置输出宽度,右对齐。2. 例如:cout3. 单个变量用单个>。4. 函数重载:适用于参数个数和参数类型不同的函数之间,不能使用在参数个数和参数类型相同,只有返回类型不同的函数之间,因为系统不能通过调用形式判断与哪一个函数匹配。5. 模板:template ; T max(T原创 2017-02-17 21:41:13 · 239 阅读 · 0 评论 -
C++知识点2
1. cout输出不能像Java一样,使用2. 有默认参数的函数(C语言中不允许这样做):要么函数定义在调用之前,在函数定义的时候表明默认参数,要么函数定义在调用之后,函数的声明里就需要表明默认的参数(在声明中给过默认参数后就不能再在定义中给出)。为了避免混淆,最好只在函数声明中给出函数的默认值。原创 2017-02-19 23:14:20 · 246 阅读 · 0 评论 -
C++知识点11
1. 类和结构体一样,不能在类中直接对成员变量赋值初始化。2. 构造函数:不具有任何类型,不返回任何值。必须与类名相同,类外定义的话,用Time::Time(){…}这种方式定义。3. 带参数初始化表对数据成员初始化:Student::Student(intn= 0,stringna= "NUL"):num(n),name(na){…},就可以通过St原创 2017-02-28 21:12:07 · 284 阅读 · 0 评论 -
C++知识点3
1. 重载和有默认参数的函数:一个函数不能同时为重载和有默认参数的函数,因为在缺省参数时,系统无法知道是重载还是在使用有默认参数的函数。2. 引用:声明一个变量的引用时,必须同时使之初始化。原创 2017-02-20 22:17:28 · 201 阅读 · 0 评论 -
关于C++中const关键字总结
1.STL迭代器 ?2. 3.classRational {...}; P18 constRationaloperator* (const Rational& lhs,const Rational& rhs); 避免 (a * b) = c;4. 5.定义常量 (1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为T原创 2017-02-12 21:00:53 · 332 阅读 · 0 评论 -
C++知识点12
1. 带参数初始化表对数据成员初始化:Student::Student(intn= 0,stringna= "NUL"):num(n),name(na){…},就可以通过Student st(123,”Zhang”);来初始化构造对象,当然可以缺省,例如只初始化学号。构造函数的默认值也可以不加的,Student::Student(intn,stringna ):num(n原创 2017-03-01 22:19:43 · 304 阅读 · 0 评论 -
C++知识点4
1. 引用:使得声明的引用和变量指向同一个地址,在函数传递的时候,传递引用和传递变量指针有相同的改变实参的作用。形参将获得实参的地址,使得实参和形参指向同一个地址。2. 引用和指针变量作为函数形参的区别:指针需要另外开辟空间,而引用不需要;要获得指针指向的值的时候,需要使用*,而引用不需要;引用更加直观,较小程序设计的难度。原创 2017-02-21 21:59:55 · 210 阅读 · 0 评论 -
C++知识点5
1. 允许:int I = 5; int *p = &I; int * &pt = p; 这时候*pt就是*p的值5。2. 内置函数:针对被频繁使用的函数,可以使用内置(内联)函数,在编译的时候,将调用的函数代码嵌入到主函数中。3. 内联函数和宏函数的区别:宏函数可能会出现意想不到的情况,是预处理阶段做的简单的字符替换;而内联函数也是替换,在编译阶段做的替原创 2017-02-22 22:15:26 · 269 阅读 · 0 评论 -
C++知识点23
1. 友元类:友元类是单向的,如果声明B是我A类的友元类,那么B就可以访问我A的数据成员,但是并不代表我A可以访问B的数据成员;友元类也不能传递。2. 关于建立C++工程:一个类声明在一个.h中,不需要包含头文件,要是要使用友元,还要提前声明友元类。然后在对应的.cpp中定义方法以及其他,包含对应头文件。最后在main.cpp中包含所有头文件,进行调用。原创 2017-03-12 23:09:46 · 355 阅读 · 0 评论