欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象——类与对象1

程序员文章站 2024-03-15 19:42:00
...

什么是类

类的定义:具有共同属性和行为的事物所构成的集合
类的组成

  • 类的声明
  • 访问控制表示
  • 成员变量(属性)
  • 成员函数(方法,行为)
    ** 类外实现的函数
    ** 内联函数inline

类的基本概念

  • 类是一个数据类型
  • 类是概念,而对象是实际存在的
  • 类和对象的关系类似于int num的关系
    ** 类对应int, 是类型。
    **对象对应num,是这个类型的一个具体的实例
  • 对象的定义:
    **类名 对象名 ,如Student st1,st2;

类的成员限定

  • 对于对象中成员的访问
    公有(public)成员:可以从结构(类)的外部访问;
    私有(private)成员:仅供结构(类)的内部(自身成员函数)访问;
    保护(protected)成员:供结构(类)的内部及后代访问
    注:面向对象“class类”中,成员的默认访问权限是:**私有(private)**的!
  • 访问方式:
    st1.show(), st2.set(100), s1.name=“Hello”
    指针类型的访问方式
    ** (* p).属性or方法
    ** p->属性or方法
    ** 具体例子: Student *p =& st1;
    (*p).show(),p->set(100),p->name=“Hello”
  • 访问限定符作用域
    从访问限定符“public/protected/private”后面的冒号“:”开始,直到下一个出现的访问限定符的整块内容都属于指定的权限!

类的定义

  • “类”的数据成员可以是任何数据类型。
    1)如整型int, 浮点型float, 字符型char, 数组, 指针, 引用等;
    2)也可以是另外一个类的对象、指向对象的指针;
    3)还可以是指向自身类的指针或引用;
    4)可以是const常量,可以用decltype推断定义;p44
  • 数据成员不能是
    1)不能是自身类的对象,不能是constexpr常量;
    2)数据成员不能指定为自动(auto)、寄存器(register) 、外部(extern)存储类型
class Complex{
private:
    int real;
    float image;//数据成员
public:
     void init(int r, float i){ real=r; image=i;}
    double getReal() { return real; }
    double getImage(){ return image; }//函数成员
};
void main(){
    Complex a;
    a.real=100;  a.image=99.9f;
    cout<<a.real<<","<<a.image<<endl;
    a.init(200, 88.8f);
    cout<<a.real<<","<<a.image<<endl;
    cout<<a.getReal()<<",";
    cout<<a.getImage()<<endl;
}

面向对象“类”中,成员权限定义的一般模式:

  • 数据成员 → 私有(private);
  • 函数成员 → 公有(public);

函数成员的声明与定义

函数成员的定义方式
(1)在类声明中定义(内置定义 -> 内置函数)

class X{……
public:
返回类型 成员函数名(参数列表) {
       函数体(函数实现)
   }
};

(2)在类声明之外定义(外置定义-> 外置函数)

class X{……
public:
   返回类型 成员函数名(参数列表); //声明
};
返回类型 类名X::成员函数名(参数列表){
       函数体(函数实现)
}

将类声明和其成员函数的定义分开是目前开发程序的通常做法;
把类的声明(头函数)看成是类的外部接口,类的成员函数的定义看成是类的内部实现;

对象赋值

面向对象——类与对象1

封装

封装(Encapsulation) 是面向对象程序设计最基本的性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。类中声明,类外实现

class Student
{
private://私有的,只有自己知道
属性或者方法,如int age;void show();
public: //共有的
属性或者方法,如string name, void set(int a); 
};
void Student::show(...}
void Student::set(int a)..}
相关标签: C++面向对象