标准C++(2)

一、类

C++是一种面向对象的语言,它在C语言的基础上添加了一种新的数据结构,类 ——class

class是一种复合型的数据结构

它能够由不同类型的变量及函数组成

C++中的class与struct几乎没有区别

唯一的区别是class里的成员的默认属性是private(私有的) ,而struct里的成员默认属性是public (公共的)

class Person
{
    char name[20];
    int age;
public:
    void show(void)
    {
         cout << "name:" <<name << " age: " << age <<endl; 
    }  
};

二、类的构造函数

在创建类的实例时,会自动执行类的构造函数,构造函数没有返回值,且构造函数的名字要与类名一致,没有手动定义构造函数时,编译器会自动定义一个无参的构造函数,通常会程序员会定义类的构造函数来进行初始化、分配资源、设置对象的初始状态。使用new申请内存时,会自动调用构造函数。

构造函数能够被重载,同时,构造函数的参数能够有默认值,调用的构造函数不存在时可能会造成编译错误

class Student
{
    int id;
    int age ;
    char sex;
public :
    Student(void)
    {
        id =0;
    }
    Student(int _age)
    {
        age = _age;
    }
    Student(char sex,int id = 0)
    {
        
    }
};

三、类的析构函数

当对象被销毁时会自动调用它的析构函数,对象的整个生命周期中只能被调用一次,它是对象被销毁前的最后执行的动作。析构函数不能被重载,没有返回值,没有参数。如果没有定义析构函数编译器会默认产生一个析构函数,使用delete释放内存时会自动调用析构 函数。

析构函数的定义

~类名(void)

{

}

class Student
{
    int id;
    int age ;
    char sex;
public :
    ~Student(void)
    {
    }
};

四、初始化列表

写在构造函数后,是一种成员的初始化方式,通常用来初始化 const 属性的成员

语法如下

类名(参数...):成员1(参数1),成员2(参数2)

{

}

【例】:

class Student
{
    const int id;
    int age ;
    const char sex;
public :
    ~Student(int age,int _id,char _sex):id(_id),sex(_sex)
    {
        this->age = age
    }
};

五、this指针

相同类的对象各自拥有独立的成员实例,但彼此共享一份成员函数(成员函数只有一份)

当一个对象调用了一个它的成员函数(非静态static的)时,编译器会自动为该函数传递一个指向该对象的指针this,成员函数由此能够知道被哪个对象调用了

类中的所有成员函数都有this指针,包括构造、析构、拷贝构造等。
  只是构造中this指向的是正在被创建的对象。

如果成员函数是属性是静态(static)的,那么该函数就属于这一个类,可以通过 类名::函数名(参数) 调用,因此静态成员函数没有this指针,无法通过this来访问成员实例。

猜你喜欢

转载自www.cnblogs.com/unjack/p/9450374.html