学习笔记C++(作用域符号、类、函数指针)

作用域符号

两种主要用法:

1、类外定义函数

声明一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数

2、调用变量

全局:如在程序中的某一处你想调用全局变量a,那么就写成::a;(也可以是全局函数)

类:如果想调用class A中的成员变量a,那么就写成A::a;

命名空间:另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespacestd;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout);

注:全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分


类:详细笔记参考链接

举一个有代表性例子如下:

#include using namespace std;

        class Point

        {

            public:

                void setPoint(int x, int y); //在类内对成员函数进行声明

                void printPoint();

            private:

                int xPos;

                int yPos;

        };

        void Point::setPoint(int x, int y) //通过作用域操作符 '::' 实现setPoint函数

        {

            xPos = x;

            yPos = y;

        }

        void Point::printPoint()      //实现printPoint函数

        {

            cout<< "x = " << xPos << endl;

            cout<< "y = " << yPos << endl;

        }

        int main()

        {

            Point M;        //用定义好的类创建一个对象 点M

            M.setPoint(10, 20); //设置 M点 的x,y值

            M.printPoint();    //输出 M点 的信息

            return 0;

        }

注:依 setPoint 成员函数来说, 在类内声明的形式为 void setPoint(int x, int y); 那么在类外对其定义时函数头就应该是void Point::setPoint(int x, int y) 这种形式, 其返回类型、成员函数名、参数列表都要与类内声明的形式一致。


题1 :形参和实参的区别

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。 

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。


函数指针:

一个基本例子(视频讲解参考)

你可能感兴趣的:(学习笔记C++(作用域符号、类、函数指针))