`
abc20899
  • 浏览: 910747 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

构造函数数据传递

 
阅读更多
#include<stream.h>
using namespace std;

//按引用传递提高效率
/**
 *按值将对象传递给函数 与 按值从函数返回一个对象时,都将创建该对象的副本。  创建这些副本时,都要调用一个特殊的构造函数:复制构造函数
 *函数返回时 临时对象将被销毁,将调用对象的析构函数。
 * */
class SimpleCat{
	public:
		SimpleCat();
		SimpleCat(SimpleCat&);  //复制构造函数
		~SimpleCat();
};

SimpleCat::SimpleCat(){
	cout<<"simple constructor"<<endl;
}

SimpleCat::SimpleCat(SimpleCat&){
	cout<<"copy ..simple constructor"<<endl;
}

SimpleCat::~SimpleCat(){
	cout<<"simple desconstructor"<<endl;
}

SimpleCat functionOne(SimpleCat cat);
SimpleCat *functionTwo(SimpleCat *cat);

int main(){
	cout<<"making a SimpleCat"<<endl;
	SimpleCat catl;   //调用构造函数
	cout<<"calling functionOne"<<endl;
	functionOne(catl);       //将SimpleCat对象按值传递  并返回SimpleCat对象     所以调用两次复制构造函数
	                         //返回时没有赋值给任何对象,副本将丢弃,调用析构函数,  其局部副本不在作用域时,再次调用析构函数
	cout<<"calling functionTwo"<<endl;
	functionTwo(&catl);      //  按照引用传递   不会创建对象的副本  析构函数  构造函数都不会调用
	return 0;
	                          //catl 不在作用域时  调用析构函数
}

SimpleCat functionOne(SimpleCat cat){   //按值传递
	cout<<"functionOne returning....."<<endl;
	return cat;
}
SimpleCat *functionTwo(SimpleCat *cat){ //参数为对象的指针,返回一个指向对象的指针
	cout<<"functionTwo returning....."<<endl;
	return cat;
}

/**
 *  输出结果:
 *  making a SimpleCat
	simple constructor
	calling functionOne
	copy ..simple constructor
	functionOne returning.....
	copy ..simple constructor
	simple desconstructor
	simple desconstructor
	calling functionTwo
	functionTwo returning.....
	simple desconstructor
 *
 * */
分享到:
评论

相关推荐

    定义一个圆类circle,它有一个变量radius(半径)。从键盘输入数据,通过构造函数的参数传递给radius,编程计算并输出圆的的周长和面积。但是,必须确保输入的数据不为复数。

    定义一个圆类circle,它有一个变量radius(半径)。从键盘输入数据,通过构造函数的参数传递给radius,编程计算并输出圆的的周长和面积。但是,必须确保输入的数据不为复数。

    JS中的构造函数详细解析

    通常来说,构造函数没有返回值,它们只是初始化由this指针传递进来的对象,并且什么也不返回。如果一个函数有返回值,被返回的对象就成了new表达式的值。从形式上看,一个函数被作为构造函数还是普通函数执行的唯一...

    c# winform间传递参数的方法

    C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢? 下面举例说明如何实现这一功能. 1.新建一个项目. ...4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.

    C# 不同Form之间值的传递

    利用C#编写的,不同Form之间值的传递方法总结。包括:公共变量、窗口调用、构造函数三种方法的实现。适合初学者学习。

    WinForm窗体间传值的方法

    4.通过构造函数把主窗体传递到从窗体中; 一、通过静态变量 特点:传值是双向的,实现简单   实现代码如下: 在一个app类中定义一个静态成员value 代码如下:public class app { public static string value; } 在...

    父子对话框传递参数范例

    子对话框需要调用父对话框的数据,通过子对话框的构造函数来实现参数的传递

    Web前端开发技术-创建对象.pptx

    使用构造函数创建对象的语法为“new 构造函数名()”,在小括号中可以传递参数给构造函数,如果没有参数,小括号可以省略。 1.创建对象的方式 创建对象 利用构造函数创建对象 1.创建对象的方式 遍历对象的属性和方法 ...

    WinForm中窗体间的数据传递交互的一些方法

    在窗体间传递数据的方法比较多: 1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了...

    C++高级参考手册 完全自学 内容详细 讲解通俗易懂

    4.5 含有构造函数和析构函数的stack 4.6 集合初始化 4.7 缺省构造函数 4.8 小结 4.9 练习 第5章 函数重载与缺省参数 5.1 范围分解 5.1.1 用返回值重载 5.1.2 安全类型连接 5.2 重载的例子 5.3 缺省参数 ...

    C++编程思想,用简单的例子和简练的叙述讲解C++编程,别具特色。

    4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的...

    C编程思想--chinapub书籍--文本PDF

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++实验: 对象的赋值与复制

    (2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。 (3)重载时间类的构造函数(不带参数)使小时、分、秒均为0。 (4)在时间类的析构函数中输出...

    【JavaScript源代码】react中props 的使用及进行限制的方法.docx

    注意:使用类组件时,如果写了构造函数,应该将props传递给super(),否则,无法在构造函数中获取到  &lt;div id="test1"&gt;&lt;/div&gt; &lt;div id="test2"&gt;&lt;/div&gt; &lt;div id="test3"&gt;&lt;/div&gt; &lt;!-- 引入react核心库 --&gt; ...

    _4_2.rar_controlugp_settime_time类私有数据_声明一个时间_时间类 3私有

    声明一个时间类,时间类中有3个私有数据成员(Hour, Minute, Second)和两个公有成员函数(SetTime和Print_Time)。SetTime根据传递的3个参数为对象设置时间;Print_Time负责将对象表示的时间显示输出.

    C++编程思想习题

    目 录 译者序 前言 第1章 对象的演化 1.1基本概念 1.1.1对象:特性十行为 1.1.2继承:类型关系 1.1.3多态性 1.1.4操作概念:OOP程序像什么 1.2为什么C++会成功 1.2.1较好的C ...附录C 模拟虚构造函数

    cPP.rar_vehicle number cpp

    编写一个程序,有一个汽车类vehicle,它具有一个需传递参数的构造函数,类中的数据成员包括:车轮个数和车重量,它们放在保护段中;轿车类car是它的公有派生类,其包含当前乘坐人数、最大乘载人数、当前行驶速度、...

    零起点学通C++多媒体范例教学代码

    11.10.2 通过构造函数将变量转换为一个对象的成员变量 11.10.3 通过operator关键字进行转换 11.11什么可以重载,什么不可以重载 第12章 继承 12.1 什么是继承和派生 12.1.1 复杂的继承和派生 12.1.2 继承和派生如何...

    零起点学通C++学习_多媒体范例教学代码

    11.10.2 通过构造函数将变量转换为一个对象的成员变量 11.10.3 通过operator关键字进行转换 11.11什么可以重载,什么不可以重载 第12章 继承 12.1 什么是继承和派生 12.1.1 复杂的继承和派生 12.1.2 继承和...

    C++编程思想 例子和叙述讲解C++编程

    4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的...

    C++编程思想.pdf

    4.4 含有构造函数和析构函数的stash 61 4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 ...

Global site tag (gtag.js) - Google Analytics