08 2016 档案
摘要:我们知道,string类内部的构造函数是采用new来分配地址的。当创建对象时,会调用string的构造函数,从而实质上也使用了new。那么问题来了,如果我用new再创建一个string类型的指针呢?下面先来看我自己定义的String类。(注意:不是标准string类) 这是一个简单的类,主要测试构造
阅读全文
摘要:堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本
阅读全文
摘要:多态公有继承:所谓多态公有继承,就是同一个方法在派生类和基类中的行为不同。 实现多态公有继承的机制:1,在派生类重新定义基类的方法。(用于对象)2,使用虚方法(多用于指针和引用),虚方法在基类用关键字virtual声明,在派生类中会自动识别基类中声明的虚方法。所以,在派生类中可以用(也可以不用)vi
阅读全文
摘要:早上起来拿手机耍了一下,突然发觉一篇关于运算符结合顺叙的贴子,关键是有一部分我不是很懂。没办法,自己动手,先看看代码: 是的,其实关键是这一句:char b = *a++; ,从输出来看,b 等于字符 a,与*a 的结果一样。那说明*a++中的++效果并没有对b起作用。在*a++后,我再将*a输出,
阅读全文
摘要:类继承的功能:1,在已有类的基础上添加功能。2, 可以给类增加数据。eg:对于一个表示人的类,可以派生一个类,添加人是否可以飞行这个数据成员(bool canfly;)3,可以修改类方法的行为。 成员初始化语法:对于以下的类,可以有两种定义构造函数的方法: 1 class TableTennisPl
阅读全文
摘要:本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节。 所谓template friend functions,就是使友元函数本身成为模板。基本步骤:1,在类定义的前面声明每个模板函数。eg:template <typename T> void counts(); templ
阅读全文
摘要:头文件stringbad1.h 1 #include <iostream> 2 #ifndef STRINGBAD_H_ 3 #define STRINGBAD_H_ 4 5 class StringBad{ 6 private: 7 char * str; 8 int len; 9 static
阅读全文
摘要:c++中,在赋值时如果类型不匹配,就会应用到:类型转换。类型转换又分为隐式转换(implicit conversion) 和 显式强制类型转换(emplcit conversion)。在这我围绕着类的情况展开来说。 类中的类型转换,离不开转换函数。创建转换函数的格式:operator typeNam
阅读全文
摘要:指针指向整数时: 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int a = 10; 7 int *p = &a; 8 9 cout << "sizeof(p) = " << sizeof(p) << e
阅读全文
摘要:string类定义了一种char*到string的转换功能,这使得可以使用C-风格字符串来初始化string对象。 类型为const引用的形参其中一个属性表明:假设实参的参数类型与引用参数不匹配,但可以转换为引用类型,程序将创建一个正确类型的临时变量,使用转换后的实参值来初始化它,然后传递一个指向该
阅读全文
摘要:突然又空,鉴于对cin对象的去值机制还不是很了解,就探究一番,并且记下来,方便以后复习。 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int date = 2; 7 char ch; 8 while (!
阅读全文
摘要:这里再次探讨一下对于数组a,a和&a有什么不同 1 #include <stdio.h> 2 3 void change_array(char*, int); 4 5 int main(void) 6 { 7 char a[10] = "abcdefg"; 8 printf("&The addres
阅读全文