#include <iostream>
using namespace std;
class circle
{
private:
double r0;
public:
circle(double r)
{
r0 = r;
cout << r << "调用了球体的初始化的函数\n";
}
circle(const circle &t){
r0 = t.r0;
cout << "r=" << r0 << "调用了球体的复制的函数\n";
}
//double get_rr(){return r;}
double getArea(){
cout << "球体的表面积:" << 4 * 3.14*r0*r0;
return 4 * 3.14*r0*r0;
}
}; class Rectangle
{
private:
double length;
double width;
double height;
public:
Rectangle(double a, double b, double c){
length = a;
width = b;
height = c;
cout << length << "," << width << "," << height << ",调用了长方体的初始化的函数\n";
} Rectangle(Rectangle &n){
length = n.length;
width = n.width;
height = n.height;
cout << height << "调用了长方体的复制函数\n";
}
double getArea(){
return (2 * length*width + 2 * length*height + 2 * width*height);
}
}; class Whole
{
private:
circle p1;
Rectangle p2; double all_area;
public:
Whole(circle xp1, Rectangle xp2); };
Whole::Whole(circle xp1, Rectangle xp2) :p2(xp2), p1(xp1){
double area1 = 2 * p1.getArea();
cout << "两个球体的表面积是:" << area1 << endl;
double area2 = p2.getArea();
cout << "长方体的表面积是:" << area2 << endl; all_area = area1 + area2;
cout << "输出总的表面积:" << all_area << endl;
} /*Whole::Whole(Whole &p):p1(p.p1),p2(p.p2){ all_area=p.area1+p.area2;
}
/*Whole::Whole(Whole &p4):p(p4.p1),p(p4.p2){
cout<<"输出总的表面积:";
area=p4.area;
}*/
int main(){
double m;
cout << "请输入m的值:";
cin >> m;
double rr = m / 2;
circle xp1(rr);
Rectangle xp2(2 * m, m, m);
Whole(xp1, xp2);
system("pause");
return 0;
}

对用拷贝函数,有一个非常重要的easy错误的地方:

在类中定义 一个变量时:

如我在 class  circle中定义一个 private :  double r,假设以下所有使用r ,那么程序将会识别错误,会使用 没有初始化的r,所以最好定义r0,后面传入的使用r,

以下是使用r的代码:

#include <iostream>
using namespace std;
class circle
{
private:
double r;
public:
circle(double r)
{
r=r;
cout<<r<<"调用了球体的初始化的函数\n";
}
circle(circle & t){
r=t.r;
cout<<"r="<<r<<"调用了球体的复制的函数\n";
}
//double get_rr(){return r;}
double getArea(){
cout<<"球体的表面积:"<<4*3.14*r*r;
return 4*3.14*r*r;
}
}; class Rectangle
{
private:
double length;
double width;
double height;
public:
Rectangle(double a,double b,double c){
length=a;
width=b;
height=c;
cout<<length<<","<<width<<","<<height<<",调用了长方体的初始化的函数\n";
} Rectangle(Rectangle &n){
length=n.length;
width=n.width;
height=n.height;
cout<<height<<"调用了长方体的复制函数\n";
}
double getArea(){
return (2*length*width+2*length*height+2*width*height);
}
}; class Whole
{
private:
circle p1;
Rectangle p2; double all_area;
public:
Whole(circle xp1,Rectangle xp2); };
Whole::Whole(circle xp1,Rectangle xp2):p2(xp2),p1(xp1){
double area1=2*p1.getArea();
cout<<"两个球体的表面积是:"<<area1<<endl;
double area2=p2.getArea();
cout<<"长方体的表面积是:"<<area2<<endl; all_area=area1+area2;
cout<<"输出总的表面积:"<<all_area<<endl;
} /*Whole::Whole(Whole &p):p1(p.p1),p2(p.p2){ all_area=p.area1+p.area2;
}
/*Whole::Whole(Whole &p4):p(p4.p1),p(p4.p2){
cout<<"输出总的表面积:";
area=p4.area;
}*/
int main(){
double m;
cout<<"请输入m的值:";
cin>>m;
double rr=m/2;
circle xp1(rr);
Rectangle xp2(2*m,m,m);
Whole(xp1,xp2);
return 0;
}

执行结果:

是错误的

C++拷贝函数的小结,关于变量的作用域等---ShinePans的更多相关文章

  1. 『无为则无心』Python函数 — 30、Python变量的作用域

    目录 1.作用于的概念 2.局部变量 3.全局变量 4.变量的查找 5.作用域中可变数据类型变量 6.多函数程序执行流程 1.作用于的概念 变量作用域指的是变量生效的范围,在Python中一共有两种作 ...

  2. Python 学习 第七篇:函数1(定义、调用和变量的作用域)

    函数是把一些语句集合在一起的程序结构,用于把复杂的流程细分成不同的组件,能够减少代码的冗余.代码的复用和修改代码的代价. 函数可以0个.1个或多个参数,向函数传递参数,可以控制函数的流程.函数还可以返 ...

  3. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...

  4. JavaScript闭包理解【关键字:普通函数、变量访问作用域、闭包、解决获取元素标签索引】

        一.闭包(Closure)模糊概述 之前总觉得闭包(Closure)很抽象而且难理解,百度一下"闭包"名词,百度的解释是:“闭包是指可以包含自由(未绑定到特定对象)变量的代 ...

  5. c++ 入门之深入探讨拷贝函数和内存分配

    在c++入门之深入探讨类的一些行为时,说明了拷贝函数即复制构造函数运用于如下场景: 对象作为函数的参数,以值传递的方式传给函数. 对象作为函数的返回值,以值的方式从函数返回 使用一个对象给另一个对象初 ...

  6. c++中内存拷贝函数(C++ memcpy)详解

    原型:void*memcpy(void*dest, const void*src,unsigned int count); 功能:由src所指内存区域复制count个字节到dest所指内存区域. 说明 ...

  7. python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域

    上节课总结 1 运算符 in 字符串 判断  : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...

  8. C++析构、拷贝、赋值、移动拷贝函数的几个知识点(不全)

    怕忘了,写这:析构函数不会释放指针成员指向的对象. 众所周知,C++的类如果没有默认构造函数,会自动生成一个. 同理,如果没有复制构造函数即A::A(const A&){}这个函数 ,则系统也 ...

  9. JavaScript函数定义和调用 变量作用域

     本文是笔者在看廖雪峰老师JavaScript教程时的个人总结   JavaScript中函数定义可以是这样的格式 function 函数名(参数) {     函数体 } 也可以是这样的格式     ...

随机推荐

  1. xUtils框架的使用详解

    一.xUtils简介 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受 ...

  2. win7+iis7+asp+.net+php环境配置

    一.我们先来配置一下iis: f 1. 点击[開始]->[控制面板]->点击[程序和功能]进入下一步 2. 然后,在左側点击[打开或关闭Windows功能].然后会跳出来一个框 3. 開始 ...

  3. AT&amp;T汇编语言——简单实例及工具演示

    今天就来用详细实例代码来运用一下昨天所说的仅仅个工具的使用方法吧 这几个实例基本的目的是来熟悉一下汇编相关工具的使用方法及应用一下昨天刚说的汇编程序模板. 我们用到的工具主要有as,ld,gcc,gd ...

  4. 如何将xml转为python中的字典

    如何将xml转为python中的字典 import cElementTree as ElementTree class XmlListConfig(list): def __init__(self, ...

  5. Diablo 3 Web API

    这是暴雪提供的WebAPI,能够通过网页的方式訪问玩家的用户信息.结构相当清晰,非常有借鉴价值. 应用JSON(JavaScript Object Notation)做数据交换,很好理解. 以我的暗黑 ...

  6. json树递归js查询json父子节点

    上代码,直接另存为html打开,看console控制台就可以看到效果了 <!DOCTYPE html> <html lang="en"> <head& ...

  7. C#.NET常见问题(FAQ)-使用SharpDevelop开发 如何在项目中添加类文件

    点击文件-新建-文件,然后再工程内创建文件   或者工程-添加-新建项     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai12 ...

  8. ArcEngine中的缩放地图

    在ArcEngine地图操作中,缩放地图的功能经常用到,这里做一个小结. 缩放地图一般可分为以下几种情况: 1.缩放地图:与放大地图相对,一般是手动绘制区域或固定比例缩放,可调用命令或Expand函数 ...

  9. 使用mysql 统计函数 结果为null时返回值改为0

    SELECT COALESCE(SUM(total),0)  FROM test_table

  10. IIS 之 Web 服务器上的 ASP.NET 进程模型设置

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置. processModel 节只能在 Machine.config 文件中进行设置, ...