类的赋值
来源:互联网 发布:应聘数据分析师面试题 编辑:程序博客网 时间:2024/06/05 01:21
这是头文件
#pragma once#include "iostream"#include "cstring"using namespace std;class computer {private: char* brand; int price;public: //===============================【类的赋值函数】================================== // 描述:当把类A赋值给类B时,类B会调用这个函数来复制类A内容。 // 如果用编译器默认的类的赋值函数可能会出现几种错误情况 // 1.指针赋值,如果不自己申请内存,而是直接将指针指过去,可能会出现野指针的情况。 // 2.如果const变量成员,如果用默认赋值函数会出错,因为赋值函数会在里面为const成员赋值。 // 提示:定义在类中的static变量在这个类中是共用的。 //============================================================================= /* //默认情况编译器会自动给我写成这样,但是这样【会有问题】 computer(const computer &ct) { brand = ct.brand; //在这里就会有问题,一旦类B被释放了,类A的brand也会跟着被释放。 price = c.price; //这里是没有问题的。 } */ //最好的办法是我们自己写出赋值函数 computer(const computer &ct) { //这样就没问题了。 int len = strlen(ct.brand) + 1; brand = new char[len]; strcpy_s(brand,len,ct.brand); brand = ct.brand; } //=========================【构造函数】========================== // 描述:构造函数 //=============================================================== computer(const char *brand, const const int price) { int len = strlen(brand) + 1; computer::brand = new char[len]; strcpy_s(computer::brand,len,brand); } //=========================【其它函数】========================== // 描述:类的其它函数 //=============================================================== void printf() { static int cnt = 0; cnt++; cout << "brand=" << brand << " price=" << price << "static变量"<<cnt<<endl; }};
这是源文件
#include "head.h"int main() { computer ct1("联想",5000); cout << "====================ct1=======================" << endl; ct1.printf(); cout << "====================ct2=======================" << endl; computer ct2 = ct1; ct2.printf(); //在出CT1就可以明白,static变量在computer类中是共用的,无论以后定义了多少个computer类,static变量都是共用的。 cout << "======================ct1=======================" << endl; ct1.printf(); return 0;}
0 0
- 类的赋值
- 类的赋值初始化
- 类的赋值
- 类的初始化和赋值
- STL的 string 类赋值
- 类的属性赋值失败
- 类的初始化和赋值
- 深入浅出类的赋值、拷贝
- 类的默认赋值函数
- 类的拷贝、赋值、销毁
- String类赋值的理解
- 关于c++类的赋值的问题
- 基类与派生类的赋值
- [BCB]String类的一些赋值语句
- 关于类的初始化和赋值
- 类的赋值操作符函数
- C++类的成员初始化 与 赋值
- 类中函数指针的赋值
- 大学程序学习之旅
- sublime安装完毕之后的常用配置
- 模块化建立项目流程(Maven聚合模块)
- Spark MLlib算法
- 列表和表格---学习笔记02
- 类的赋值
- jsp中的搜索条件回显
- Java中方法多态以及多接口实现
- PHP 数据库mysql(一)
- vim查找或删除部分重复的行
- 优化MySchool SQL编程 第三章
- 拷贝构造函数、赋值运算符、构造函数的区别及关系?
- 使用xshell来操作服务器
- 在JS原型prototype中编写提取整数和移除字符串首尾空白的trim方法