zoukankan      html  css  js  c++  java
  • C++学习笔记(4)

    一.   类和对象

    1.对象和对象指针:

    Time time, *T;

       T = &time;

       time.n = 12;

       time.show();

       T->n = 11; //注意不能使用time->show()的形式,也不能用T.show();

       T->show();

     还可以通过new实现实例化

    Pen *pen = new Pen();

    1. 对象数组

    Time time[10];

    time[0].n = 0; //也可以(time+0)->n = 0;

    1. 类中的内联函数

    (1)  隐式内联函数:函数体在类中的函数(不需要inline)

    (2)  显示内联函数:在类中声明,在类外定义,但是类中的声明,而且声明时要inline

    1. 构造函数:可以重载,而且可以有多个;只要声明一个对象就调用一次构造函数;可以传参,注意使用参数初始化表:如Pen(int size):m_size(size){}
    2. 相同类型的结构体对象可以直接赋值,如Student stu1,stu2;stu1 = stu2
    3. 析构函数:只能有一个;如果对象是在栈中被创建的,则在对象失去作用域时,系统自动调用析构函数来释放对象占用的内存

    8.虚函数:解决基类对象指针无法调用子类函数情况(如果在基类中声明成员函数为虚函数,再将派生类的对象传递给基类指针,通过这个基类指针就可以调用派生类中的的虚函数);

    class A

    {

    public:

       void Fun()

       {

          cout << "It is A" << endl;

       }

    };

    class B:public A

    {

    public:

       void Fun()

       {

          cout << "This is B" << endl;

       }

    };

    int main()

    {

       A *a1, a2;

       a1 = &a2;

       a1->Fun();

       B b;

       a1 = &b;

       a1->Fun();

       return 0;

    }

    上面这个程序就输出两个 It is A

    而将A中的Fun()声明为   virtual void Fun(),就可以输出This is B

    纯虚函数:含有纯虚拟函数的类称为抽象类,它不能生成对象,格式:virtual void Fun() = 0;(virtual 函数类型 函数名称(参数列表)== 0;)

    在一个类中声明纯虚函数,而在派生类中没有重新对该函数进行定义,在纯虚函数在派生类中依然为纯虚函数

    1. 内联函数:(inline)对于在类中定义的函数比较小的情况下,可以将类中的成员函数定义为内联函数,减少系统的调用时间
    2. 静态成员:(静态数据和静态函数)属于整个类共有

    (1)  静态数据只能在函数外部单独初始化,而且也不能在构造函数中初始化,(但是也可以通过函数和对象改变静态变量的值)如

    class A

    {

    public:

       static int a;

       A();

    };

    A::A()

    {

       //a = 0; //会报错

    }

    int A::a = 0; //格式为:数据类型 类名::静态数据变量 == 初始值

    (2)  静态成员不依赖与对象存在,在程序编译时分配空间,在程序结束时释放空间,故即使不定义对象,也可以为静态成员变量分配空间,进而可以使用该静态成员

    class A

    {

    public:

       static int a;

    };

    int A::a = 0; 

    int main()

    {

       cout << A::a << endl;

    }

    (3)  静态函数与普通函数的区别:普通成员函数在参数传递时编译器会隐藏一个this指针,来确定调用类产生的哪个对象,但是静态成员函数没有this指针,不知道应该访问哪个对象中的数据,所以不可以用静态成员函数来访问普通变量,只能访问静态成员变量

    1. 友元:可以将一个普通函数或者类申明为一个类的友元,则该函数或者改类中的函数就可以访问该类中的数据了

    friend  B;//但是必须在前面申明B类哈

       friend void Input();

       friend void Input(A &aa,int x); //注意要想通过友元函数改变类中数据必须是对对象的引用才行哈

    1. const:常成员变量,值不可改变,不能再构造函数的定义中为常成员变量赋值,但是可以使用参数初始化表对const成员变量进行初始化

    const int a;

       A(int x = 1) :a(x)

       {

       }

    10. 常成员函数:只能引用本类中的成员变量而不能修改成员变量  

    void Output()const //注意不是const void Output()哈,const void Output()并非常成员函数哈,而且const void Output()是乐意修改成员变量的值的,关于二者的区别可见笔记本

  • 相关阅读:
    换个格式输出整数
    c++入门构造函数
    接口继承与实现
    spring mvc 之@requestmapping
    RabbitMQ
    Socket通信原理
    TCP三次握手与四次挥手
    WIN 10家庭版没有Hyper-V
    aop 切面demo
    JVM之旅------jvm内存模型
  • 原文地址:https://www.cnblogs.com/Con-Tch-LLYF/p/6534010.html
Copyright © 2011-2022 走看看