c++基础系列:类

类的介绍

类的基本思想是数据抽象(data abstraction)封装(encapsulation)

数据抽象是一种依赖于接口和实现分离的编程以及设计技术;类的接口包含用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

封装实现了类的接口和实现的分离;封装后的类隐藏了它的实现细节,即类的用户只能使用接口而无法访问实现部分。

定义抽象数据类型

使用class和struct关键字

二者仅形式上有所不同,实际上可以使用这两个关键字中的任何一个定义类;唯一的一点区别就是,struct和class的默认访问权限不一样。

使用struct关键字,则定义在第一个访问说明符之前的成员是public;使用class关键字,则这些成员是private。

c++对结构体struct的能力进行了扩展,使得与class功能接近。

类别 struct class
含义 定义一个数据结构集合 一个的对象的封装
默认访问权限 public private
继承 能(默认public方式继承) 能(默认private方式继承)
包含成员函数
实现多态
定义模板参数 不能

定义成员函数

所有成员都必须在类的内部声明,但成员函数体可以定义在类内也可以定义在类外。

在类外定义成员的名字必须包含它所属的类名。

this指针

在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址(指向本身)。

this 指针是所有成员函数的隐含参数;因此,在成员函数内部,它可以用来指向调用对象。

this作用域是在类内部,只能在成员函数中使用,并且只有在成员函数中才有定义。

用法:

1. 一般情况下,在C++中,当成员函数中某个变量与成员变量名字相同,则使用this关键字来表示成员变量。

#include 
using namespace std;
 
class Student{
private:
    char *name;
    int age;
    float score;

public:
    void _name(char *name);
    void _age(int age);
    void _score(float score);
    void _show();

};
 
void Student::_name(char *name){
    this->name = name;
}
void Student::_age(int age){
    this->age = age;
}
void Student::_score(float score){
    this->score = score;
}
void Student::_show(){
    cout << this->name << "的年龄:"<age<<",成绩:" << this->score << endl;
}
 
int main(){
    Student *pstu = new Student;
    pstu->setname("王二麻子");
    pstu->setage(16);
    pstu->setscore(96.5);
    pstu->show();
 
    return 0;
}

 2. 链式调用,即在类的非静态成员函数中返回对象本身,可使用return *this

class Box {
private:
    int length, width; 

public:
    Box& setLength(int length) {  // 返回一个指向当前对象的引用
        this->length = length;  // 将传递的参数 length 赋给成员变量 length

        return *this;  // 返回指向当前对象的引用
    }
 
    Box& setWidth(int width) {  
        this->width = width;  

        return *this;  
    }
 
    void display() {  
        std::cout << "Length: " << length << ", Width: " << width << std::endl;  
    }

};
 



// 使用示例
Box b;
b.setLength(10).setWidth(5).display();  // 链式调用 setLength, setWidth, display 函数显示结果

定义类相关的非成员函数一般将这些函数的声明应该与类在同一个头文件中。

构造函数

类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。

构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。

构造函数特点:与类名相同、没有返回类型。

默认构造函数:类通过一个特殊的构造函数来控制默认初始化过程,默认构造函数无须任何实参。

你可能感兴趣的:(C++,c++,c++11,c++类)