类对象的赋值和复制
2015-09-15 23:31
141 查看
对象的赋值可以采用重载运算符的方法实现:
对象名1 = 对象名2;
对象的复制可以采用复制构造函数的方法实现:
(1)类名 对象2(对象1)
(2)类名 对象2 = 对象1
这两种方法调用的都是复制构造函数而不是构造函数,故需要提前声明复制构造函数;若没有声明复制构造函数,则这两种方法在编译时均能通过,但也没有调用构造函数,程序运行结束时却会调用析构函数。
class myClass
{
public:
myClass();//构造函数
myClass(const myClass &A);//复制构造函数
~myClass();//析构函数
private:
static int a;//调用构造函数的次数
static int b;//调用复制构造函数的次数
static int c;//调用析构函数的次数
};
//构造函数
myClass::myClass()
{
}
//复制构造函数
myClass::myClass(const myClass &A)
{
}
//析构函数
myClass::~myClass()
{
}
//类的静态成员变量的初始化
int myClass::a = 0;
int myClass::b = 0;
int myClass::c = 0;
int main(void)
{
}
对象名1 = 对象名2;
对象的复制可以采用复制构造函数的方法实现:
(1)类名 对象2(对象1)
(2)类名 对象2 = 对象1
这两种方法调用的都是复制构造函数而不是构造函数,故需要提前声明复制构造函数;若没有声明复制构造函数,则这两种方法在编译时均能通过,但也没有调用构造函数,程序运行结束时却会调用析构函数。
class myClass
{
public:
myClass();//构造函数
myClass(const myClass &A);//复制构造函数
~myClass();//析构函数
private:
static int a;//调用构造函数的次数
static int b;//调用复制构造函数的次数
static int c;//调用析构函数的次数
};
//构造函数
myClass::myClass()
{
a++; cout << "this is in Constructor: "<< a << endl;
}
//复制构造函数
myClass::myClass(const myClass &A)
{
c++; cout << "this is in Copy-Constructor: " << c << endl;
}
//析构函数
myClass::~myClass()
{
b++; cout<<"this is in Deconstructor: "<< b << endl;
}
//类的静态成员变量的初始化
int myClass::a = 0;
int myClass::b = 0;
int myClass::c = 0;
int main(void)
{
myClass A;//调用构造函数 myClass B = A;//调用复制构造函数 myClass C(A);//调用复制构造函数 myClass D;//调用复制构造函数 D = A;//运算符重载 return 0;
}
相关文章推荐
- linux sh 计算文件目录
- 编译原理:第五节
- Windows Server 2012 R2在桌面上显示计算机/网络图标
- 一行代码搞定UITextView的placeholder
- 大整数的乘法运算
- rails学习笔记:维护商品信息任务B
- php发送get、post请求的几种方法
- IDEA 14 快捷键
- Yii框架relations的使用
- 欢迎使用CSDN-markdown编辑器
- 【Machine Learning in Action --2】K-最近邻分类
- 百度竞价从入门到精通
- DP:Cow Bowling(POJ 3176)
- 移动应用平台的开发环境的发展演变-elcipse与android studio
- 加密学原理及openssl,私有CA搭建
- BlackBerry Java 开发环境搭建及插件安装
- 的撒示范点
- 帮网友写的一个SQL(连续区间合并)
- Linux:文件权限
- 各种距离