首页 > 编程语言 >C++day03

C++day03

时间:2024-08-10 13:24:06浏览次数:9  
标签:weight day03 double Per height C++ 类中 构造函数

1> 思维导图

2>

设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

#include <iostream>

using namespace std;

class Per
{
private:
    string name;
    int age;
    double *height;   //身高
    double *weight;   //体重
public:
    //无参构造函数
    Per()
    {
        height = nullptr;
        weight = nullptr;
        cout << "Per::无参构造函数" << endl;
    }

    //有参构造函数
    Per(string name,int age,double height,double weight):name(name),age(age),height(new double(height)),weight(new double(weight))
    {
       cout << "Per::有参构造函数" << endl;
    }

    //拷贝构造函数
    Per(const Per &other):name(other.name),age(other.age),height(new double(*(other.height))),weight(new double(*(other.weight)))
    {
        cout << "Per::拷贝构造函数" << endl;
    }

    //析构函数
    ~Per()
    {
        delete height;
        delete weight;
        cout << "Per::析构函数" << endl;
    }

    void show()
    {
        cout << "name= " << name << "  age= " << age << "  height= " << *height << "  weight= " << *weight << endl;
    }

};

class Stu
{
private:
    double score;
    Per p1;
public:
    //无参构造函数
    Stu()
    {
        cout << "Stu无参构造函数" << endl;
    }

    //有参构造函数
    Stu(double score,string name,int age,double height,double weight):score(score),p1(name,age,height,weight)
    {
        cout << "Stu::有参构造函数" << endl;
    }
    //析构函数
    ~Stu()
    {

        cout << "Stu::析构函数" << endl;
    }

    void show()
    {
        cout << "score= " << score << " ";
        p1.show();
    }

};
int main()
{
    Per p2;
    Per p3("张三",19,182,166);
    p3.show();
    Per p4(p3);
    p4.show();
    Stu s1;
    Stu s2(98,"李四",18,180,160);
    s2.show();
    Stu s3(s2);
    s3.show();
    return 0;
}

运行结果:

标签:weight,day03,double,Per,height,C++,类中,构造函数
From: https://blog.csdn.net/m0_59481131/article/details/140998821

相关文章

  • 0810day03
    1.简述python垃圾回收机制就是对于之前占用的内存空间,比如一开始x的值为10,后面改为了11,那之前定义占用的空间(被视为垃圾)就会被自动删除,这也是与其他语言不一样的点,其他的语言可能还需要自己去删,python会自动删去不需要的内存占用2.对于下述代码:x=10y=10z=10dely10......
  • C++ int32, int64 和十六进制字符串的转换
       #include<iostream>#include<string>#include<cstring>//用于memset,strlen#include<algorithm>/***@brife:将一个int64数字转为十六进制字符串*@note:int64Value:0,hexStr:0000000000000000int64Value:-1,h......
  • C++ 11 auto(自动类型推导) 和 decltype(获取表达式类型)
    C++(2)auto占位符自动类型推导auto能够实现类型的自我推导,并不代表一个实际的类型声明。auto只是一个类型声明的占位符。auto声明的变量,必须马上初始化,以让编译器推断出它的实际类型,并在编译时将auto占位符替换为真正的类型。注意:C++11中auto不能用于函......
  • 【C++】decltype
    1、简介我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型......
  • C++入门基础知识(笔记):成员变量和成员函数分开存储,非静态成员变量,是属于类的对象上,空对
    在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上。1.空对象占用内存空间为:1个字节,代码演示:#include<iostream>usingnamespacestd;//成员变量和成员函数分开存储classPerson{};//这是一个空对象voidtest01(){ Personp;......
  • 2024年华为OD机试真题-求幸存数之和-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】_华为od机试csdn-CSDN博客 题目描述给一个正整数数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引0的位置开始向后跳,中间跳过J个数字,命中索引为J+1的数字,该数被敲出,并从该点起跳,以此类推,直到幸存le......
  • C++入门:C语言到C++的过渡
    前言:C++——为弥补C缺陷而生的语言        C++起源于1979年,当时BjarneStroustrup在贝尔实验室工作,面对复杂软件开发任务,他感到C语言在表达能力、可维护性和可扩展性方面存在不足。        1983年,BjarneStroustrup在C语言基础上添加面向对象编程......
  • 第18 章探讨 C++新标准 移动语义和右值引用
    第18章探讨C++新标准移动语义和右值引用第18章探讨C++新标准移动语义和右值引用文章目录第18章探讨C++新标准移动语义和右值引用18.2移动语义和右值引用程序清单18.2useless.cpp18.2移动语义和右值引用现在介绍本书前面未讨论的主题。C++11支持移动语......
  • 【C++进阶学习】第十二弹——C++ 异常处理:深入解析与实践应用
    前言:在C++编程语言中,异常处理是一种重要的机制,它允许程序员在运行时捕获和处理错误或异常情况。本文将详细介绍C++异常处理的相关知识点,包括异常的定义、抛出与捕获、异常处理的原则、以及在实际编程中的应用。目录1.异常处理的基本概念1.1异常的定义1.2异常的抛出......
  • c++入门这一篇就够了!!!
    c++简介“c++”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫”cwithclsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。     为什么c++不叫++c呢?因为它虽然对......