C++语言程序设计笔记(2)

来源:互联网 发布:零壹乐队 知乎 编辑:程序博客网 时间:2024/05/20 18:03

25)在内存中,C风格字符串常量的最后被自动加了一个'\0', 因此在输出时能确定字符串的终止位置。

26)char cStr[11]; cin.get(cStr, 11) or cin.getline(cStr, 11);

27)标准库字符串操作函数:

<cstring>

strcat(toStr, fromStr) ——将fromStr全部连接到toStr后面,必须保证toStr够大以容纳fromStr

strcat(toStr, fromStr, n)——将fromStr前n个字符连接……

strcmp(str1, str2)——比较两个字符串大小,相同返回0,其它为负或正

strncmp(str1, str2, n)——比较前n个字符……

strcpy(toStr, fromStr)——将fromStr全部复制过去,包括了\0

strncpy(toStr, fromStr, n)——将fromStr前n个复制过去,注意n包不包括\0

strlen(str)——返回字符长度,不包括\0,用sizeof(str)则包含了\0

<cstdlib>

atof(cStr)——返回double类型

atoi(cStr)——int

atol(cStr)——long

只对空白字符和数字开头的字符有效,后面的非数字字符会自动忽略。

28)substr(pos, len)——pos从0到n-1……

29)str.find("..")的返回值是size_type类型

30)str[i]和str.at(i)意思一样,但后者更安全一些。

31)当使用string对象filename存储我们希望打开的文件的名字时,由于ifstream对象的成员函数open只能接受C风格字符串作为文件名,就需要使用转换函数进行转换:filename.c_str()

32)getline(cin, str)可以输入一行字符串,包括空格,直到换行符,换行符会被消耗,但不会被存入str中。


==》==》==》==》==》==》


33)基类成员有public、protected、private三种访问控制方式,继承也有三种控制方式,以public方式继承(public, protected, private)-->(public, protected, 不可访问);以protected方式继承(public, protected, private)-->(protected, protected, 不可访问);以private方式继承(public, protected, private)-->(private, private, 不可访问)。

34)protected是半封闭,即派生类可以访问,但其它类不能访问;

35)派生类中需要自己定义构造函数,并调用基类的构造函数,具体地,SuccessorClass::SuccessorClass(....):Base(...){....};如果是SuccessorClass::SuccessorClass(),则调用基类的默认构造函数

36)当一个类即是派生类也是组合的时候,先调用基类的构造函数,再调用嵌入类的构造函数,最后调用本类的构造函数。

37)在多重继承中,构造函数的初始化列表只是用于传递参数,基类构造函数的调用次序不是由初始化列表中基类的出现次序决定的,而是由派生类定义时基类出现次序决定的。

38)多重继承中,带参数的构造函数格式S(...):B1(..),B2(..){....}

39)对象调用成员函数用(.),类名调用成员函数用(::)。

40)多复继承中的二义性问题,可以采用作用哉操作符(::)明确选择的是哪个副本中的数据;也可以采用虚基类的方法(关键字virtual),使派生类对象的存储空间中只保留被重复继承的祖先类的一个对象副本。


==》==》==》==》==》==》


41)函数重载:函数名相同,但形参不一样以区分不同的函数。(仅仅只有参数传递方不同不是有效的函数重载)。

42)复制构造函数的形参类型是类类型本身,且使用引用方式进行参数的传递。X(const X&)。

43)浅复制会使两个类中的指针(如果有)指向同一个内存地址,上于析构函数执行空间的释放,两个类会调用两次,即释放两次,会出错。

44)使用复制构造函数的三种情形:

用已有的对象对新对象进行初始化;

调用以值形参传递类对象的函数;

调用返回值为类对象的函数;

45)可以用成员函数对操作符进行重载,也可以用友元函数对操作符进行重载。

46)类成员操作符重载:

返回类型 类名::operator 操作符 (形参表)

{

......

}

47)典型的操作符重载:赋值操作符重载:Base& operator= (const Base& anothoerBase) { ...}

48)类的友元在类定义中使用friend保留字进行说明,在friend保留字后列出友元的名字。将另一个完整的类设为友元时,该类中所有的成员函数都被视为本类的友元函数。可以利用友元进行操作符重载。

49)类的友元不是类的成员,但是可以访问该类的私有和受保护成员。


To be continued...

0 0