IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 37_C++【不同实例化对象的地址】【类内公有静态成员属性】【类内公有静态成员函数】【常函数信息】【类外_const修饰的常对象】【内部静态函数给静态成员(公有、私有)赋值】 -> 正文阅读

[C++知识库]37_C++【不同实例化对象的地址】【类内公有静态成员属性】【类内公有静态成员函数】【常函数信息】【类外_const修饰的常对象】【内部静态函数给静态成员(公有、私有)赋值】

box.h

#ifndef BOX_H
#define BOX_H
#include<iostream>
#include<cstring>
#include<malloc.h>
using namespace std;

class Box
{
public:
    Box();
    Box(int a, int b, int c, char *name, char str);
    Box(const Box&p);
    void Surface_area();
    void box_v();
    void setval(int a, int b, int c, char *name, char str,int num2);
    void printf_name();
    void printf_str();
    void printf_val();
    ~Box();

    static void printf_str_1()//需要在main中由类对象引出打印!!
    {
        num = 10;
        num2 = 60;
        cout << "内部静态函数给静态成员(公有、私有)赋值" << endl;//?
        cout << num << endl;
        cout << num2 << endl;
    }

    void test00() const//常函数--仅可以查看类内的成员变量信息,想要修改成员变量,必须加mutable 才可以
    {
        m = 100;
        num = 111;
        num2 = 222;
        //x = 100;mutable未修饰x所以无法修改左值
        cout << "类内_mutable修饰 m= " << m << endl;
        cout << "类内_x= " << x << endl;
        cout << "类内_w= " << w << endl;
        cout << "类内_n= " << n << endl;
        cout << "类内_未被mutable修饰的静态公有静态成员:num= " << num << endl;
        cout << "类内_未被mutable修饰的静态私有静态成员:num2= " << num2 << endl;
        cout << "类内_name_1= " << name_1 << endl;// ?
        cout << "类内_h= " << h << endl;// ?
        //cout << "类内_str= " << str << endl;// ?
    }

    static int num;
    int n;
    mutable int m;//加上mutable常对象即可修改

private:
    int x;
    int w;
    int *h;
    char *name_1;
    char str;
    static int num2;
};

#endif // BOX_H

box.cpp

#include "box.h"

int Box::num = 10;
int Box::num2 = 20;
//static void Box::printf_str_1()!!类内的静态函数不可以放到外面

Box::Box()
{
    cout<<"默认构造!!!"<<endl;
    x = 0;
    w = 0;
    h = new int;
    str = NULL;
    name_1 = new char[40];
    n = 0;
}

Box::Box(int a, int b, int c, char *name, char str)
{
    cout<<"有参构造"<<endl;
    this->x = a;
    this->w = b;
    this->h = new int(c);
    this->str = str;

    this->name_1 = new char[40];
    strcpy(this->name_1, name);
}

Box::Box(const Box &p)
{
    this->x = p.x;
    this->h = new int (*p.h);
    this->w = p.w;
    this->str = p.str;

    this->name_1 = new char[20];
    strcpy(this->name_1, p.name_1);
}

void Box::Surface_area()
{
    int i = 2 * ((x * w ) + (w * (*h)) + (x * (*h)));
    cout<< "表面积是:"<< i << endl;
}

void Box::box_v()
{
    int i = x * w * (*h) ;
    cout<< "该立方体的体积为:"<< i << endl;
}

void Box::setval(int a, int b, int c, char *name, char str, int num2)
{
    this->x = a;
    this->w = b;
    this->h = new int(c);
    this->str = str;
    Box::num2 = num2;

    this->name_1 = new char[20];
    strcpy(this->name_1, name);
}

void Box::printf_name()
{
    cout << "长方体名称:"<< name_1 << endl;
}

void Box::printf_str()
{
    cout << "长方体编号:" << str << endl;
}

void Box::printf_val()
{
    cout << (*h) <<" "<< w <<" "<< x <<" "<< name_1 <<" "<< str \
         << num2<< endl;
}


Box::~Box()
{
    cout<<"析构函数释放~"<< endl;
    if(h != NULL)
    {
        delete h;
    }
    if(name_1 != NULL)
    {
        delete[]name_1;
    }
}



main.cpp

#include <iostream>
#include"box.h"
using namespace std;


int main()
{
   #if 0
    cout << "输出rec2的信息-赋值+打印:" << endl;
    Box rec;
    rec.setval(10, 5, 6,"box", 'a',223);
    cout << "地址:" << &rec << endl;
    rec.printf_val();


    cout << "输出rec2的信息-赋值+打印:" << endl;
    Box rec2;
    rec2.setval(1, 2, 3,"dd", 'c',23);//调用有参构造
    cout << "地址:" << &rec2 << endl;
    rec2.printf_val();
    putchar('\n');
   #endif

   #if 0
    cout << "类内公有静态成员属性-赋值+打印:" << endl;
    Box::num = 220;
    cout << Box::num << endl;
    putchar('\n');
   #endif

   #if 0
    cout << "类内公有静态成员函数-打印:" << endl;
    Box::printf_str_1();
    putchar('\n');
   #endif

   #if 1
    Box rec3;
    cout << "常函数信息:" << endl;
    rec3.test00();
    putchar('\n');
   #endif

   #if 0
    const Box rec4;
    cout << "类外_const修饰的常对象.赋值+打印:" << endl;
    rec4.m = 2;
    rec4.num = 333;
    //rec4.num2 = 10;//私有静态无法修改,num是公有静态可以
    cout << "m = " << rec4.m << endl;
    putchar('\n');
   #endif


    return 0;
}


图示:

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:25:18  更:2021-08-12 16:26:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 21:17:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码