类和对象、访问限定符、默认成员函数

来源:互联网 发布:萤火虫壁纸软件 编辑:程序博客网 时间:2024/05/21 18:32
1、类的定义,访问限定符,面向对象封装性,对象的引用。
    
(1)每个实体都是对象,对象的类型是类,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。
    类是用户建立的类型,如果程序中要用到类类型,必须根据自己的需要进行声明,或者使用别人已设计好的类。
    关键字class和类名组成类头,class是声明类时必须使用的关键字,相当于声明结构体类型时用的struct,最大的花括号内是类体,类体中是类的成员表,包括数据部分和对这些数据进行操作的函数,这就体现了把数据和操作封装在一起。花括号后的分号后是定义的类的对象。这样的写法会导致封装在类对象中的成员都对外界隐蔽,不能调用。这就用到下面说的“访问限定符”
(2)private和public是成员访问限定符,private为私有的成员,不能被外部访问,public为公有成员,既能被本类内的成员函数所引用,也可以被类的作用域内的其他函数引用。还有一种protected,用protected声明的成员称为受保护的成员,它不能被类外访问,但可以被派生类的成员函数访问。
(3)在面向对象的程序设计中,在声明类时,一般都是把所有的数据指定为私有的,使它们与外界隔离。把需要让外界调用的成员函数设置为公用的。在类外虽然不能直接访问私有成员,但是可以通过调用公用成员函数来引用甚至修改私有数据成员。
(4)对象成员的引用:第一是“对象名”+“.”+“成员名”;第二是“指向对象的指针”;第三是“对象的引用”
------------------------------------------------------------------------------------------- 
2:默认成员函数及运算符重载
(1)构造函数
    为了“对象的初始化”,c++提出了构造函数,构造函数是一种特殊的成员函数,与其他成员函数不同,它不需要用户来调用它,而是在建立对象时自动执行。构造函数是在声明类的时候由类的设计者定义的,程序用户只需在定义对象的同时指定数据成员的初值即可。构造函数的名字必须与类名相同,以便编译系统能识别为构造函数来处理。它不具有任何类型,不返回任何值。
(2)拷贝构造函数
    拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致。
    //构造函数  
    CExample(int b)  
    { a = b;}  
      
    //拷贝构造函数  
    CExample(const CExample& C)  
    {  
        a = C.a;  
    }  
    它必须的一个参数是本类型的一个引用变量
(3)析构函数
    析构函数也是个特殊的成员函数,它的作用和构造函数相反,名字前加~,当对象的生命期结束时,会自动执行析构函数,析构函数的作用不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作。一个类可以有多个构造函数,但只能有一个析构函数。
(4)赋值操作符重载
    赋值运算符的重载是对一个已存在的对象进行拷贝赋值。
(5)取地址操作符重载
    一般的赋值运算符重载函数的参数是函数所在类的const类型的引用,加const是因为:我们不希望在这个函数中对用来进行赋值的原版做任何修改;加上const,对于const和非const的实参,函数就能接受,如果不加const,就只能接受非const的实参;用引用是因为这样可以避免在函数调用时对实参的拷贝,提高效率;
    一般返回值是被赋值者的引用,即*this
(6)const修饰的取地址操作符重载
    
-------------------------------------------------------------------------------------------
3:隐含的this指针,及对运算符重载背后做的事情。
    在每个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,就是this指针,它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。例如,当调用成员函数a.volume时,系统就把对象a的起始地址赋给this指针,于是在成员函数引用数据成员时,就按照this指针所指的地址找到对象a的数据成员。
阅读全文
0 0
原创粉丝点击