前面我们介绍了c++作为一个面向对象的高级编程语言,知道了面向对象的特征。今天就开始正式的学习c++了。

         我们知道,c++的核心就是把程序功能化,结构化,那么结构化,就必须有类。

         一个类,里面有变量,有方法(函数)。类里边的变量,我们称他为成员变量,函数就称为成员函数。

        由于c++封装的特性,一般默认情况下,类里边的成员变量和成员方法都是private的也就是私有的,外部对象是无法访问的,这种情况下类就没有了任何作用,因此我们一般把成员变量设为私有,把成员方法设为public  ,公有的成员方法也称作接口。

        构造函数,和类名相同,无返回值,负责对成员变量初始化。

        访问函数,得到成员变量的值

        设置函数,设置(修改)成员变量的值

        析构函数,在释放对象的时候启用,以~开头,和类名相同。

       一般情况下,就算我们不写构造函数,系统也会给我们添加一个构造函数,这个构造函数就叫做默认构造函数,他不对成员变量有任何操作。我们写的构造函数会屏蔽系统的默认构造函数。但是构造函数是可以重载的。

        所谓重载,就是相同的函数名,不同的参数列表,(变量类型不同,或者变量个数不同)

       默认构造函数分为两种,不带参数的构造函数,带参数的有默认值构造函数。

       不带参数的构造函数,这就是系统生成的构造函数一样,不对成员变量有任何操作。但是我们声明了,系统就不会在生成默认构造函数。

        带参数的有默认值的构造函数,他可以包含很多情况,不带值的,带有一个值,或者更多值的。

class Thing 
{
private:
        int x,y;
public :
    //Thing(int a=0,int b=0);
    Thing ();
    Thing (int a,int b);
};
class Thing 
{
    Thing (){}//默认构造函数
    
    Thing (int a,)
    {
        x=a;
    }//重载的构造函数
    Thing (int a,int b)
    {
        x=a,y=b;
    }//带有默认值得构造函数
    //Thing (int a,int b); 这条语句和上面的语句不能同时存在,因为带默认值的构造参数包含了上面的情况,不复合重载的规则
}

      当然了,构造函数还有一个表达方式,就是初始化列表,以“:”开头后加成员变量(参数值)

如:

      

  Thing (int a,nt b):x(a),y(b)P{}

   在以下情况下必须用初始化列表:

                类中的const成员、类中的引用成员、父类中无默认构造函数,在子类中对父类成员初始化必须使用初始化列表。

       还有一个小知识点,就是 const 修饰的对象:

         在c语言中,我们知道const 修饰的变量一经初始化就不能在改变了,那么在c++中,是怎么样呢?

         在c++中 所有内容分为两类,对象   const修饰对象              普通对象

                                                        成员      const修饰                  普通成员

                                                        方法     const修饰方法           非const方法

        其中,非const修饰的对象可以调用const成员函数也可调用普通成员函数

                       const对象只能调用const 成员函数

        const成员函数    只有只读权限,因此它不可能修改成员变量的值

在函数定义时三种方式:

1、        函数返回值是const引用,函数的返回值不能被修改(不能做左值)

2、          函数的参数是const引用 函数体内不能修改参数的值int func(constint &)

3、        函数修饰成员函数(只限于类的定义) int function(int)const;在该函数体内不能修改成员变量(常用与打印输出函数,保护权限)

const 修饰的函数:此函数只能是类成员函数

1、        不能在const成员函数中修改成员变量的值

2、        只有类的成员函数才可以被const修饰

3、        函数体内不能调用该函数的对象

4、        只有类成员函数才可以修饰为const成员函数

5、        const成员函数只能调用该类中的const成员函数

6、        在类中,类中的一个成员函数有const版本和非const版本