C++总结

来源:互联网 发布:淘宝详情页跳出率70% 编辑:程序博客网 时间:2024/06/16 06:05
一:typedef
(1):作用:为一个已有的数据类型(int ,double等)声明一个或多个别名。
(2):语法形式:typedef 已有类型名 新类型名    例:(1)typedef int A; A n1,n2;   (2)typedef double C,d;   C n1; d n2;
二:枚举
(1):语法形式:enum 枚举类型名 {变量值列表};   例:enum weekday {mon,tue,wen,thu,fri,sat,sun};
(2):对枚举元素按常量处理,不能对他们赋值
三:结构体
(1):结构体变量占内存大小可用sizeof运算求出:sizeof(类型名或变量名)
四:联合体
(1):联合体的语法形式和结构体相似  
(2):联合体变量声明的语法形式:   联合名 联合变量名;
(3):联合体变量的引用形式:  联合变量名.成员名  
(4):联合体也可以不声明名称,称无名联合体 例:  union  {int i;float f};   访问:i=10;f=2.2;
      它通常用作结构体的内嵌成员 
五:函数的参数传递
(1): 函数在没有被调用之前没有为形参分配内存空间,调用时才分配。传参指形参与实参结合,结合方式:值调用和引用调用
(2):引用调用:一旦一个引用被初始化后就不能改为只想其他对象
六:内联函数
(1):一些功能简单,规模较小,使用频繁的函数可以设计为内联函数。
    1。函数体内一般不能有循环和switch语句。
    2。内联函数的定义出现在第一次被调用前。
    3。对内联函数不能进行异常接口声明。  注:异常接口:
(2):语法形式:inline 类型说明符 被调函数名(含类型说明的参数表){函数体}
七:函数的重载
(1):两个以上的函数,具有相同的函数名,不同的形参个数或类型,编译器自动匹配确定调用哪个函数,就是函数的重载。
(2):重在函数的形参必须不同,且不要将功能不同的函数定义为重载函数
八:类的组合
(1):类的组合描述的就是一个类内嵌其他类的对象作为成员的情况,他们之间是包含与被包含的关系
(2):类的成员函数既可以是基本数据类型也可以是自定义数据类型,也可以是类的对象
(3):创建类的对象时,如果这个类已经有内嵌对象成员,那么各个内嵌对象首先被自动创建。
(4):创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化
(5):组合类构造函数的一般形式:类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),。。。。。     {类的初始化}
(6):对基本类型的数据成员初始化的另一种方式:初始化列表,比赋值语句效率高。 例:Circle::Circle(float r):radius(r)  {}
(7):组合类构造函数调用的顺序:先调用内嵌对象的构造函数,调用顺序是按照内嵌对象在组合类的定义中出现的顺序。再调用本类的构造函数。注:析构函数的调用顺序完全相反。
(8):组合类编写拷贝构造函数,需要对内嵌对象的拷贝构造函数传递参数
      例:C类中包含B类的对象b作为成员,C类的拷贝构造函数形式:  C::C(C &c1):b(c1.b)  {...}  
九:静态数据成员
(1):用static关键字声明   静态成员在每个类中只有一个拷贝
(2):静态数据成员具有静态生存期。静态数据成员不属于任何对象,因此只能通过类名访问。格式: 类名::标识符
(3):静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态的数据成员必须通过参数传递方式得到对象名,然后通过对象名访问
十:const常量
  1.常引用:
    常引用所引用的对象不能被更新。  声明形式:const 类型说明符 &引用名
  2。常对象:
    常对象声明的时候必须初始化  声明形式:类名 const 对象名;
  3.常成员函数:
    声明方式:类型说明符 函数名(参数表)const;
    注意:1.const是函数的一部分,在函数定义时也要加上。
        2.常成员函数不能更新对象的数据,也不能调用没有const修饰的其他成员函数
        3.一个常对象只能调用他的常成员函数,其他的不能调用,即 常对象唯一的外接口方式
        4.可用于区分重载函数  例:void print();和void print() const;
  4.常数据成员
  (1)任何函数都不能对常数据成员赋值,只能通过构造函数对其进行初始化
十一:对象数组
(1):即存放多个对象的数组  声明形式:类名  数组名[下标表达式]
(2):访问对象数组中对象的共有成员:  数组名[下标].成员名
(3):调用构造函数对每个对象进行初始化:若指明了初始值,调用方式:A a[2]={A(1,2),A(3,4)};
                                若未指明,调用方式:    A a[2]={A(1,2)};
十二:指向类的非静态成员的指针
(1):声明指针的语句形式:  类型说明符 类名::*指针名;//指向公有数据成员的指针
                      类型说明符 (类名::*指针名)(参数表);//指向公有函数成员的指针
(2):对数据成员指针赋值:  指针名=&类名::数据成员名;
(3):访问数据成员形式:  对象名.*类成员指针名    or  对象指针名->类成员指针名
(4):对成员函数指针赋值:   指针名=&类名::函数成员名;
十三:运算符重载
(1):含义:是对已有的运算符赋予多种含义,使同一个运算符作用于不同类型时产生不同行为。其实质就是函数的重载
(2):重载形式:1:重载为类的成员函数  
                语法形式: 函数类型 operater 运算符(形参表)
                        {函数体;}
            2:重载为类的友元函数
                语法形式: friend 函数类型 operater 运算符(形参表)
                        {函数体;}
            注:函数类型指明了函数返回值的类型 ,运算符即是要重载的运算符名称  例:要重载加法运算符 ,这里就写+
0 0
原创粉丝点击