程序代码:
#include <iostream>
#include <string>
using namespace std;
class String
{
int length;
char *str;
public:
String(char*);
String(const String &p);
void Show()
{
cout<<str<<endl;
}
};
String::String(char*s)
{
if (s)
{
length=strlen(s);
str=new char[length+1];
strcpy (str,s);
}
else
{
length=0;
str=0;
}
}
String::String(const String &p)
{
length=p.length;
str=new char[length+1];
strcpy(str,p.str);
}
void main()
{
String str1("Welcome to here!");
String str2(str1);
cout <<"str1: ";
str1.Show();
cout<<"拷贝后\n str2: ";
str2.Show();
}
运行结果:
- 大小: 1.7 KB
分享到:
相关推荐
拷贝构造函数 Pet (Pet&a); 纯虚函数void Speak (); 纯虚函数void GetInfo; (2) 在Pet类的基础上派生出猫类Cat: 数据成员(protected): int id; // 猫的编号; 函数成员(public): 构造函数 (提示: 自已...
自定义String类 构造函数 拷贝构造 =运算符重载 +运算符重载 运算符重载 等 等
练习:课程类 添加学生时,若数组容量不够,则创建一个更大的数组,并将内容拷贝到新的数组 实现dropStudents函数 ...在该类中实现自定义的析构函数和拷贝构造函数,达到深拷贝的目的 编写测试程序,测试实现的类
//拷贝构造函数 CVector(const double* const pData,const size_t &nSize;); CVector(const float* const pData,const size_t &nSize;); CVector(const int* const pData,const size_t &nSize;); //公开的成员...
实现一个通用的数组类,...* 提供对应的拷贝构造函数以及operator=防止浅拷贝问题 * 提供尾插法和尾删法对数组中的数据进行增加和删除 * 可以通过下标的方式访问数组中的元素 * 可以获取数组中当前元素个数和数组的容量
由于operator=操作和拷贝构造函数的功能类似,都执行拷贝操作。因此,编译器也分提供无用的默认operator=操作和非无用的默认operator=操作。并且什么时候提供非无用的默认operator=操作和无用的等操作的情形也和拷贝...
C++运算符重载:自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的...
3、设计构造与析构函数,不要求输出信息,但各位同学可以自己输出并分析各个对象的创建与删除的情况: Book();//将m_ID初始化为0,表示这个一个未赋值对象 virtual ~Book();//无具体的工作 Book(const Book& other...
i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。 (重载这两个运算符如下) 代码如下:#include <iostream>using namespace std; class MyInterger{public: long...
C++的一般编译器都定义和封装了字符串功能,模仿定义string类的实现,可以实现并支持如下功能:...(1)赋值(2)拷贝构造 (3)重载“=” (4)m.legnth() 函数测量字符串的长度 (5)m.cat(string const &)连接字符串
第14章 函数重载、拷贝构造函数和默认变元 14.1 函数重载 14.2 重载构造函数 14.3 拷贝构造函数 14.4 查找重载函数的地址 14.5 重载的过去与现在 14.6 默认的函数变元 14.7 函数重载和二义性 第15章 运算符重载 ...
5.2 拷贝构造函数和拷贝赋值 5.3 友元 5.4 静态成员 5.5 常量和可变成员 5.6 类的对象作为成员 5.7 类的数组 5.8 成员指针 5.9 常微分方程的数值解法 5.10 练习 第6章 运算符重载 6.1 复数 ...
这种情况多出现在用一个通用的函数指针调用多个函数的场合,其中有些函数不需要函数指针声明中的所有参数。看下面的例子: int fun(int x,int y) { return x*2; } 尽管这样的用法是正确的,但大多数C和C++的...
13.1.1 拷贝构造函数 440 13.1.2 拷贝赋值运算符 443 13.1.3 析构函数 444 13.1.4 三/五法则 447 13.1.5 使用=default 449 13.1.6 阻止拷贝 449 13.2 拷贝控制和资源管理 452 13.2.1 行为像值的类 ...
13.1.1 拷贝构造函数 440 13.1.2 拷贝赋值运算符 443 13.1.3 析构函数 444 13.1.4 三/五法则 447 13.1.5 使用=default 449 13.1.6 阻止拷贝 449 13.2 拷贝控制和资源管理 452 13.2.1 行为像值的类 ...
20、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。 A.MyClass(MyClass x) B.MyClass&(MyClass x) C.MyClass(MyClass &x) D.MyClass(MyClass *x) 二、填空题(前16个空,每空1分,后2个空,...
2.3 模板类的拷贝构造函数 3 2.4 基本类型数据初始化 3 2.5 异常处理 4 2.6 命名空间 4 2.7 using声明 4 2.8 namespace std 4 2.9 explicit关键字 5 2.10 新的类型转换符 5 2.11 静态常量成员的初始化 6 2.12 时间...
如果贪图方便,你甚至可以在调用智能指针的构造函数时去new出你的对象。 内部实现的关键在于:自动地址引用计数、操作符重载。 可以实现任意类型(基本数据类型、自定义类型)的指针地址的自动引用计数。
//拷贝构造函数 CVector(const double* const pData,const size_t &nSize;); CVector(const float* const pData,const size_t &nSize;); CVector(const int* const pData,const size_t &nSize;); //公开的成员...
1.3 Stream的构造函数 1.4 Stream的重要属性及方法 1.5 Stream的示例 1.6 Stream异步读写 1.7 Stream 和其子类的类图 2.1 为什么要介绍 TextReader? 2.2 TextReader的常用属性和方法 2.3 TextReader 示例 2.4 从...