13.class类的定义、宏定义、条件编译、构造函数和析构函数

  • 类的定义
  • 宏定义
  • 条件编译
  • 构造函数
  • 析构函数

类的定义

面向对象的程序设计算法

语法:

class 名{
public:
   语句;  
praivate:
   语句;
protected:
   语句;
}

public:公有: 可以在外部引用,也可以直接访问到praivate;

praivate: 私有:只能在内部访问到数据;语句没有申明在哪个praivate

protected:保护:与praivate的功能相同

类在VS中的应用

1、点击源文件,右键新建项、选择c++类

2、include “头文件.h”   // 调用自己定义的头文件

.cpp文件用于函数的逻辑,.h文件用于数据属性的申明

#include "clist.h"

#include <iostream>
using namespace std;
class clist
{
    int a;
public:
    void input(int a);
};

void clist::input(int a)
{
    cout << a << endl;
}

int main()
{
    clist fg;
    fg.input(4);
}

输出结果为4

宏定义

语法

#define 表示符 字符串

eg:

#define M(y) (y*y+y+3)

int main()
{
    int b = M(1) * 2;
    cout << b << endl;
}

输出10;

条件编译

语法:

#ifdef UNICODE  // 在Unicode字符集环境下
typedef wchar_t PPCHAR;
#else    // 不在Unicode字符集环境下
typedef char PPCHAR;
#endif

ifndef的使用

主要可以防止重定义,

#ifndef _PLAY_H_
#define _PLAY_H_

class Playeer
{
private:
    int num;
};

#endif // !_PLAY_H_

相同效果,类似#progma once

#pragma once

class Playeer
{
private:
    int num;
};

 

构造函数

构造函数明与类同名,没有定义构造函数时会自动定义一个函数

语法:

class clist
{      int a;
    char *name;
public:
    clist():a(0),name(nullptr){} // 构造函数初始化
    clist(int a, char ename[20])  // 构造函数进行数据赋值
    {
        this->a = a;
        name = new char[20];
        for (int i = 0; i < 20; i++)
        {name[i] = ename[i];}}
};    

 

析构函数

析构函数与类同名,但有前缀~,用于释放构造函数的内存

语法:

#pragma once
class clist
{
    int a;
    char *name;
public:
    clist():a(0),name(){} // 初始化
    clist(int a, char ename[20])  // 进行数据赋值
    {
        this->a = a;
        name = new char[20];
        for (int i = 0; i < 20; i++)
        {
            name[i] = ename[i];
        }
    }
    ~clist()    // 析构函数
{              delete[]name;    // 释放内存
        name = nullptr;}};        

返回目录

posted @ 2023-05-31 16:48  微纯册  阅读(99)  评论(0编辑  收藏  举报