#define _CRT_SECURE_NO_WARNINGS //windows系统
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std; class student
{
private:
char *name;
int age;
public:
student(const char *n = "no name", int a = )   
{
name = new char[]; // 比malloc好!
strcpy(name, n);
age = a;
cout << "构造函数,申请了100个char元素的动态空间" << endl;
}
student & operator=(const student &s)
{
strcpy(name, s.name);
age = s.age;
cout << "赋值函数,保证name指向的是自己单独的内存块" << endl;
return *this; //返回 “自引用”
}
student(const student &s)
{ // 拷贝构造函数 Copy constructor
name = new char[];
strcpy(name, s.name);
age = s.age;
cout << "拷贝构造函数,保证name指向的是自己单独的内存块" << endl;
}
void display(void)
{
cout << name << ", age " << age << endl;
}
  virtual ~student()
{ // 析构函数
cout << "析构函数,释放了100个char元素的动态空间" << endl;
delete[] name; // 不能用free!
}
};
int main()
{
//student s; //编译错误,类中实现了构造函数,因此,需要有参数
student k("John", );
student mm(k); //拷贝构造函数 student m("lill", );
m.display(); m = k; //赋值函数
k.display();
mm.display(); return ;
}

运行结果:

构造函数,申请了100个char元素的动态空间
拷贝构造函数,保证name指向的是自己单独的内存块
构造函数,申请了100个char元素的动态空间
lill, age 666
赋值函数,保证name指向的是自己单独的内存块
John, age 56
John, age 56
析构函数,释放了100个char元素的动态空间
析构函数,释放了100个char元素的动态空间
析构函数,释放了100个char元素的动态空间

const char *n = "no name",必须添加const

最新文章

  1. C# 给PDF添加图片背景
  2. Angular2 组件生命周期
  3. Java实现的二分查找算法
  4. echo &#39;&lt;script&gt;alert(&quot;插入成功&quot;)&lt;/script&gt;&#39;;
  5. freeCodeCamp:Where do I belong
  6. Android Fragment 你应该知道的一切
  7. 对Joint Training of Cascaded CNN for Face Detection一文的几点疑惑
  8. PLSQL_解析过程及硬解析和软解析的区别(案例)
  9. 关于HTML中浮动与清除的思考
  10. HDU_2136——最大质因数,素数筛选法
  11. (转) Virtual function
  12. AndroidUI组件之ListView小技巧
  13. ecshop QQ邮箱发送邮件服务器配置
  14. dhtmlx Gantt知识点1
  15. python,opencv,imread,imwrite,存储,读取图像像素不一致,这种情况是label使用jpg格式
  16. tiny4412 --Uboot移植(3) 时钟
  17. drozer工具的安装与使用:之二使用篇
  18. 【PyQt5-Qt Designer】QMessageBox 弹出框总结
  19. luffy后端之跨域corf的解决方法
  20. [python]关于列表增加元素的几种操作

热门文章

  1. 用CSS控制图片大小显示的方法
  2. 360或其他双核浏览器下在兼容模式用chrome内核渲染的方法
  3. jquery进阶(1)
  4. javascript中call()、apply()、bind()的用法理解
  5. WPF样式学习三
  6. mybatis-mybatis-config.xml详细介绍
  7. HDU 2602 Bone Collector骨头收藏者(01背包)
  8. c++ vector &amp; 二维数组 &amp; MessageBox
  9. Javascript 向量
  10. 人脸验证算法Joint Bayesian详解及实现(Python版)