首页 > 编程语言 >C++ 构造函数与析构函数

C++ 构造函数与析构函数

时间:2023-08-20 16:33:05浏览次数:385  
标签:函数 int 与析构 xa C++ Player ya 构造函数

构造函数和析构函数

构造函数

  • 构造函数会在实例化对象的时候执行,可以在实例化时传入参数。

  • 构造函数没有返回值。不需要声明返回值。

  • 构造函数的函数名与类名保持一致。

// class name: Player
Player(int xa = 0, int ya = 0){
    // 构造函数,传入初始坐标进行初始化
    x = xa;
    y = ya;
    cout << "你出生在:(" << x << ", " << y << ")\n";
}

析构函数

  • 析构函数会在释放对象的时候执行。
  • 析构函数没有参数,但是()不能省略。
// class name: Player
~Player(){
    // 析构函数
    cout << "你在(" << x << ", " << y << ")死亡\n";
}

完整例子:

#include <iostream>

using namespace std;

class Player{
private:
    int x, y; // 玩家位置
public:

    Player(int xa = 0, int ya = 0){
        // 构造函数,传入初始坐标进行初始化
        x = xa;
        y = ya;
        cout << "你出生在:(" << x << ", " << y << ")\n";
    }

    void getPos(){
        cout << "你现在的位置:(" << x << ", " << y << ")\n";
    }

    void move(int xa, int ya){
        cout << "move from (" << x << "," << y << ") to \
(" << x+xa << "," << y+ya << ")" << endl;
        x += xa;
        y += ya;
    };

    ~Player(){
        // 析构函数
        cout << "你在(" << x << ", " << y << ")死亡\n";
    }

};

int main()
{
    Player player1(14,27);
    player1.move(2,-3);
    player1.getPos();
    return 0;
}

标签:函数,int,与析构,xa,C++,Player,ya,构造函数
From: https://www.cnblogs.com/orzmiku/p/17644201.html

相关文章

  • C++ 变量初始化总结
    堆空间,new操作初始化1、对于有自己写构造函数的类,不论类型名后面有没有括号()或者数组[],都用构造函数进行初始化,如果构造函数delete,则编译报错;2、如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,3、而加了括号()的new会在分配内存的同时初始化为0。栈空间......
  • c++基础入门
    1.安装g++编译器是编译C++代码使用的编译器,不要使用gcc了。在用户目录中单独创建一个文件夹存放下载后的3个安装文件,然后进入到目录中执行下面命令cd文件夹sudodpkg-i*.deb本地安装sudoapt-getinstallg++在线安装2.C++的语言特点及优势cwithclass(类)cplusplus大型......
  • c++算法之动态规划:01背包
    什么是动态规划?动态规划算法(dynamicprograming),是一种由递推为基础的比贪心更稳定的一种优化策略,为运筹学的一部分。就是通过以递推为基础的手段非暴力求出最值。它的总体思想其实就是一个比较过程:假如你有一个数据,它的价值是x,代价为y,如果用动态规划就是和你不加这个元素和你加......
  • C/C++ 中 static 关键字解析
    局部静态变量的特点:全局数据区执行到函数内对象声明处首次初始化,若没有显示初始化,自动初始化为0,且只初始化一次始终驻留在全局区,直到程序结束,作用域为局部作用域,在函数或语句块内,生命周期到程序结束全局静态变量的特点:全局区在main函数执行前分配内存并初始化注意:......
  • 使用WebAssembly实现高性能计算:C++和Rust的案例分析
    WebAssembly是一种新型的低级字节码格式,它可以在浏览器中运行高效的编译代码。使用WebAssembly可以实现高性能计算、游戏引擎等功能,对于需要大量计算的Web应用程序来说尤为重要。本文将介绍使用WebAssembly实现高性能计算的两个案例:C++和Rust。C++C++是一种高性能的编程语言,它......
  • C++入门:内联函数
    1.概念以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。查看方式:1.在release模式下,查看编译器生成......
  • C++ 突袭
    基本知识必须在函数声明中声明默认参数!默认参数必须在形参列表的结尾!避免歧义函数声明就是函数的身份证,外部调用方不看定义只看声明和取地址类似函数overload函数重载要求:函数的名字相同参数列表(数量,类型)不同注意:与返回值无关问题--避免overlo......
  • C++序列化封装EasySerialize
      最近在做C++项目,需要序列化和反序列化json以及xml数据。可能是由于用惯了C#等更高度化语言,搜了一遍,发现C++没有特别方便使用的序列化、反序列化的库。大部分库都是为了实现功能(非常感谢这些实现库的作者),使用时,需要根据字段深度定义结构体字段(这一步无法省略),然后再使用手动编......
  • 24届C++后端开发八月面经
    百度提前批一面项目:日志模块,如何实现保证写入和非保证写入如何保证日志时间的实时性?不用文件大小作为文件滚动的标注,而是使用时间作为标识更加符合查看日志的需求webserver如何与MYSQL数据库进行交互?当有非常多的并发量,如何进行一个MYSQL底层存储的优化?记录用户uid最......
  • c++ 面试整理
    如何理解封装、继承、多态封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。多态多态指同一个实......