类的赋值

news/2024/7/4 0:50:35 标签: class
class="baidu_pl">
class="article_content clearfix">
class="markdown_views prism-atom-one-dark">

这是头文件

class="prettyprint">class=" hljs cpp">class="hljs-preprocessor">#pragma once
class="hljs-preprocessor">#include "iostream"
class="hljs-preprocessor">#include "cstring"
class="hljs-keyword">using class="hljs-keyword">namespace class="hljs-built_in">std;
class="hljs-keyword">class computer {
class="hljs-keyword">private:
    class="hljs-keyword">char* brand;
    class="hljs-keyword">int price;
class="hljs-keyword">public:
    class="hljs-comment">//===============================【类的赋值函数】==================================
    class="hljs-comment">//  描述:当把类A赋值给类B时,类B会调用这个函数来复制类A内容。
    class="hljs-comment">//  如果用编译器默认的类的赋值函数可能会出现几种错误情况
    class="hljs-comment">//  1.指针赋值,如果不自己申请内存,而是直接将指针指过去,可能会出现野指针的情况。
    class="hljs-comment">//  2.如果const变量成员,如果用默认赋值函数会出错,因为赋值函数会在里面为const成员赋值。
    class="hljs-comment">//          提示:定义在类中的static变量在这个类中是共用的。
    class="hljs-comment">//=============================================================================
    class="hljs-comment">/*
    //默认情况编译器会自动给我写成这样,但是这样【会有问题】
    computer(const computer &ct) {
        brand = ct.brand; //在这里就会有问题,一旦类B被释放了,类A的brand也会跟着被释放。
        price = c.price;    //这里是没有问题的。
    }
    */

    class="hljs-comment">//最好的办法是我们自己写出赋值函数
    computer(class="hljs-keyword">const computer &ct) {
        class="hljs-comment">//这样就没问题了。
        class="hljs-keyword">int len = class="hljs-built_in">strlen(ct.brand) + class="hljs-number">1;
        brand = class="hljs-keyword">new class="hljs-keyword">char[len];
        strcpy_s(brand,len,ct.brand);
        brand = ct.brand;
    }

    class="hljs-comment">//=========================【构造函数】==========================
    class="hljs-comment">//  描述:构造函数
    class="hljs-comment">//===============================================================
    computer(class="hljs-keyword">const class="hljs-keyword">char *brand, class="hljs-keyword">const class="hljs-keyword">const class="hljs-keyword">int price) {

            class="hljs-keyword">int len = class="hljs-built_in">strlen(brand) + class="hljs-number">1;
            computer::brand = class="hljs-keyword">new class="hljs-keyword">char[len];
            strcpy_s(computer::brand,len,brand);
    }

    class="hljs-comment">//=========================【其它函数】==========================
    class="hljs-comment">//  描述:类的其它函数
    class="hljs-comment">//===============================================================
    class="hljs-keyword">void class="hljs-built_in">printf() {
        class="hljs-keyword">static class="hljs-keyword">int cnt = class="hljs-number">0;
        cnt++;
        class="hljs-built_in">cout << class="hljs-string">"brand=" << brand << class="hljs-string">"  price=" << price << class="hljs-string">"static变量"<<cnt<<endl;
    }
};

这是源文件

class="prettyprint">class=" hljs cpp">class="hljs-preprocessor">#include "head.h"
class="hljs-keyword">int main() {

    computer ct1(class="hljs-string">"联想",class="hljs-number">5000);
    class="hljs-built_in">cout << class="hljs-string">"====================ct1=======================" << endl;
    ct1.class="hljs-built_in">printf();
    class="hljs-built_in">cout << class="hljs-string">"====================ct2=======================" << endl;
    computer ct2 = ct1;
    ct2.class="hljs-built_in">printf();
    class="hljs-comment">//在出CT1就可以明白,static变量在computer类中是共用的,无论以后定义了多少个computer类,static变量都是共用的。
    class="hljs-built_in">cout << class="hljs-string">"======================ct1=======================" << endl;
    ct1.class="hljs-built_in">printf();
    class="hljs-keyword">return class="hljs-number">0;
}

http://www.niftyadmin.cn/n/1666823.html

相关文章

公司报表数据库优化

2019独角兽企业重金招聘Python工程师标准>>> 报表系统优化 背景&#xff1a; 11.22早晨 刚放下背包&#xff0c;收到一份邮件&#xff0c;邮件意思是公司报表数据库慢&#xff0c;让我帮忙看看。邮件还附带了一个SQL文本&#xff0c;指出这个SQL慢。随后电话了开发人…

表分区更慢(不要为了分区而分区),什么时候做分表

表分区更慢&#xff08;不要为了分区而分区&#xff09;&#xff0c;什么时候做分表 https://zhidao.baidu.com/question/292971854.html 如过查询条件不在分区条件中&#xff0c;跨区查询会更慢。什么时候做分表&#xff1a;https://www.cnblogs.com/limeng951/p/5701366.htm…

iOS 自定义滑动切换TabBar

貌似经常会用到&#xff0c;自己整理收藏起来&#xff0c;方便日后查找备用。 效果如图&#xff1a; 由于制作gif&#xff0c;调整了属性&#xff0c;所以看起来的效果不好。如果用默认配置&#xff0c;生成的gif会很大。 制作gif: 1.使用QuickTimePlayer &#xff0c;mac上插上…

HDU 5188 背包

有N道题。要求得到最少W分 给出N道题的&#xff1a;每道题用时T。分数V&#xff0c;应在且必须在L时刻提交才干得分 问得到W分所用的最少的时间 以L-T排序&#xff0c;然后做01背包就可以 #include "stdio.h" #include "algorithm" #include "string.…

delete 类数组指针时可能出现的问题

源文件 //---------------------------------【delete类数组指针异常】-------------------------------- // 描述&#xff1a;在删除类指针的时候&#xff0c;如果用来机械删除下一个指针&#xff0c;因为上一个指针被删除了&#xff0c;其地址值也会被改变 // 如果在来进行…

MySQL报错:error1130

[rootclickhouse-04 sysbench]$mysql -h 172.31.x.x -uroot -p123456 -P 3306 ERROR 1130 (HY000): Host ip-172-31-x-x.ec2.internal is not allowed to connect to this MySQL server 分析&#xff0c;从上面的报错我们分析出mysql客户端是可以连接服务器的&#xff0c;但是报…

通俗理解docker

通俗理解docker https://www.zhihu.com/question/28300645 安装很简单&#xff0c;主要在于写 dockerfile分享&#xff1a; 喜欢 0 赠金笔 阅读┊ 评论 ┊ 收藏┊转载┊ 喜欢▼ ┊打印┊举报 加载中&#xff0c;请稍候......前一篇&#xff1a;表分区更慢&#xff08;不要为了…

【十三】友元

以下是关于友元的一些用法。 头文件 提示&#xff1a;友元是单向的无法被继承 //------------------------------------【友元】----------------------------------------- // 描述&#xff1a;一个破坏类封装类的家伙 // 他可以是一个类&#xff0c;也可以是一个函数&am…