zoukankan      html  css  js  c++  java
  • C++的类和对象

      C++在C语言的基础上增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,通常被称为用户定义的类型。

      类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。它们之间的关系是:对象是类的实例,类是对象的模板,他是一个定义包括在特定类型的对象中的方法和变量的软件模板。类是抽象的,不占内存,而对象是具体的,占用存储空间。

      对象是通过new ClassName产生的,用来调用类的方法;类是一种抽象的数据类型。

    类的声明:类是一种抽象的数据类型。

    class 类名
    {
        public:
        公用的数据和成员函数
        protected:
        保护的数据和成员函数
        private:
        私有的数据和成员函数
    }  

    定义对象的方法:

    1.先声明类类型,然后再定义对象
    举例:
    Student stud1,stud2;     //Student是已经声明的类类型
    2.在声明类类型的同时定义对象
    class Student  //声明类类型
    {
        public:    //先声明公用部分
        void display()
        {
            cout<<″num:″<<num<<endl;
            cout<<″name:″<<name<<endl;
            cout<<″sex:″<<sex<<endl;
        }
        private:    //后声明私有部分
        int num;
        char name[20];
        char sex;
    }
    stud1,stud2;    //定义了两个Student类的对象
    //在定义Student类的同时,定义了两个Student类的对象。 
     
    3.不出现类名,直接定义对象
     class//无类名
    {
        private://声明以下部分为私有的
        public://声明以下部分为公用的 
    }
    stud1,stud2;//定义了两个无类名的类对象
      直接定义对象,在C++中是合法的、允许的,但却很少用,也不提倡用。在实际的程序开发中,一般都采用上面3种方法中的第1种方法。在小型程序中或所声明的类只用于本程序时,也可以用第2种方法。在定义一个对象时,编译系统会为这个对象分配存储空间,以存放对象中的成员。
     
    成员函数:是函数的一种,它也有返回值和函数类型。
    它与一般函数的区别只是:
    • 它是属于一个类的成员,出现在类体中。
    • 它可以被指定为private(私有的)、public (公用的)或protected(受保护的)。
    • 在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数)。

    一般的做法是将需要被外界调用的成员函数指定为public,它们是类的对外接口。

     类外定义函数:
    class Student
    {public:
      void display();  //公用成员函数原型声明
    private:
      int num;
      string name;
      char sex;  //以上3行是私有数据成员
    };
    void Student∷display()  //在类外定义display类函数
    {  
      cout<<″num:″<<num<<endl;  //函数体   cout<<″name:″<<name<<endl;   cout<<″sex:″<<sex<<endl; } Student stud1,stud2;  //定义两个类对象

    注意:

    • 在类体中直接定义函数时,不需要在函数名前面加上类名。
    • 成员函数在类外定义时,必须在函数名前面加上类名,予以限定(qualifed),“∷”是作用域限定符(field qualifier)或称作用域运算符,用它声明函数是属于哪个类的。
    • 如果在作用域运算符“∷”的前面没有类名,或者函数名前面既无类名又无作用域运算符“∷”,则表示display函数不属于任何类,这个函数不是成员函数,而是全局函数,即非成员函数的一般普通函数。

    类函数必须先在类体中作原型声明,然后在类外定义(如果一个函数,其函数体只有2-3行,一般可在声明类时在类体中定义。多于3行的函数,一般在类体内声明,在类外定义。),也就是说类体的位置应在函数定义之前,否则编译时会出错。

    inline 函数:为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline )函数来处理。

      C++要求对一般的内置函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline,因为这些成员函数已被隐含地指定为内置函数。 

    应该注意的是:

      如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内置(inline )函数,调用这些成员函数的过程和调用一般函数的过程是相同的。如果想将这些成员函数指定为内置函数,应当用inline作显式声明。 

    一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。

     虽然调用不同对象的成员函数时都是执行同一段函数代码,但是执行结果一般是不相同的。

    不同的对象使用的是同一个函数代码段,C++为此专门设立了一个名为this的指针,用来指向不同的对象。
    需要说明:
    (1) 不论成员函数在类内定义还是在类外定义,成员函数的代码段都用同一种方式存储。
    (2) 不要将成员函数的这种存储方式和inline(内置)函数的概念混淆。
    (3) 应当说明: 常说的“某某对象的成员函数”,是从逻辑的角度而言的,而成员函数的存储方式,是从物理的角度而言的,二者是不矛盾的。
     
    stud1.num=1001;  //假设num已定义为公用的整型数据成员
      表示将整数1001赋给对象stud1中的数据成员num。其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。
      访问对象中成员的一般形式为 : 对象名.成员名 ,不仅可以在类外引用对象的公用数据成员,还可以调用对象的公用成员函数,但是必须指出对象名。
    应该注意所访问的成员是公用的(public )还是私有的(private )。只能访问public成员,而不能访问private成员。在类外只能调用公用的成员函数。在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作。
     
     
  • 相关阅读:
    sql优化
    一些有用的单词(1)
    用到的 Sed 注解
    终端工具注册码
    nginx四层、七层负载均衡配置示例
    http 状态码
    04. Golang 数据类型
    03. Golang 特性
    02. Go 命令
    01. GOPATH 目录结构划分的两种风格
  • 原文地址:https://www.cnblogs.com/ST-2017/p/11352864.html
Copyright © 2011-2022 走看看