老师布置的一个C++问题,不明白啥意思,求解
发布网友
发布时间:2022-05-11 16:32
我来回答
共2个回答
热心网友
时间:2023-10-15 10:24
我觉得意思是让你完成一个构造函数,构造函数接受一个manage参数,
类似
class Manage{
shape * a[100];
public:
Manage(Manage mg){
//这里完成以mg为参数,构造新的manage的功能
//由于是深度拷贝,所以你需要重新构造出一个a[100]这个成员
//注意mg里的a的类是shape,所以你不知道是circle还是triangle,可能要做类型判断和类型转换,例如最容易想到的做法是你给circle和triangle的基类shape声明一个成员函数,可以说出自己是谁
}
}
提示如下:
class shape{
public: ...
virtual double area() {...}
virtual bool isCircle() {...}
....
}
class circle:public shape {
public: ...
double area() {...}
bool isCircle() {return true;}
}
class triangle: public shape {
public: ...
double area() {...}
....bool isCircle() {return false;}
}
class Manage{
shape * a[100];
public:
Manage(Manage mg){
for(int i=0;i<100;++i){
if(mg.a[i].isCircle()){ //构造一个新的circle,添加到this.a里面}
else{//构造一个新的triangle,添加到this.a 里面}
}
}
这道题目出的不错,老实说追问那也就是那个给的area()虚函数没什么用的,不用往里面添加东西?就是考察拷贝不同的类如何处理?
热心网友
时间:2023-10-15 10:24
深度拷贝,相对的是浅拷贝,好像叫shallow Copy
浅拷贝是指,如果你定义拷贝构造函数,系统默认为你生成一个拷贝构造函数
这个函数只进行按位拷贝
如果类中的变量是基本类型不会有错误
但是如果是带指针类型的,它仅拷贝了指针的地址,没有进行指针的值拷贝
如: 指针的拷贝,可能需要重新申请内存,再拷贝值
这个需要你在拷贝构造函数中自己实现
求解C语言题,不明白题目的意思,是让求什么
unsigned one :1; //1位,有效值,0,1 unsigned two :2; //2位,有效值,0,1,2,3 unsigned three :3; //3位,有效值,0~7 unsigned four :4; //3位,有效值,0~15 应该知道答案了吧
C语言中的问题不明白为什么 新人麻烦详细解释一下谢谢
这里scanf指定逗号为输入的分隔符号。所以输入时数字和字符之间必须有逗号。scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。
C语言,我不太明白什么意思 ,特别是temp和输出语句,求解答~~
//你的程序本身就已经有问题了(问题是你没有给a,b,c初值,还有第三个if,逻辑错了。),下是面是我把你的程序改正过的。你的这个程序是实现输入三个值,然后由小到大输出 include<stdio.h> main(){ int a,b,c,temp;//这里定义四个变量,a,b,c,temp printf("请输入a,b,c的值:");sc...
一个C语言问题求解
然后将-159赋给c2 和 c1,你可能不理解这里。第二,你定义的c1,c2是无符号字符类型,一个字节,即8个位。所以将-159赋给c1,c2就有问题了。首先来看-159的二进制表示,由于计算机表示负数是用补码表示,补码在这就意味着,把159的二进制按位取反,然后再加1,结果就是:01100001,最后是把这个值赋...
今天C语言课上一直没搞明白一个问题 char c1='a' 老师让char换成int...
不过唯一能看出这种差别的大概只有 sizeof 了。C语言中的 sizeof('a') 一般不是 1。这不同于C++或其他语言,C++中的 'a' 是 char 类型的,所以 sizeof('a') 一定是 1 另一方面,即使 'a' 是 char 类型的,int c1='a'; 也没问题,因为 char 类型的值可以隐式转换到 int 类型 ...
...版的c程序,但是算法看不明白,有人知道什么意思的吗?解释一下。谢谢...
也就是你问题中已经分析好了n个值与n-1个值的关系了。那么你要理解的东西就很明白了 那s=(s+m)%i;也就是逆推,假如知道从2个人开始玩约瑟夫,那么逆推出3个人,4个人。。。到n个人不就一样了吗。而公式中的i就是代表玩游戏的人的个数啦。对i求余是将循环过程中如果进行到最后一个人后能...
求解释个C语言地址和指针问题,本人实在被搞的有点发懵。
int *pp=&ad[0]; //就是将pp指针定位到ad这块内存空间的起始地址,这里不是赋值哟!!!int *pp是定义pp为一个指针。也等价于int *pp; pp=&ad[0];pp++; //将pp指针往前偏移一个单元,这时所有单元里的值没有发生改变。如果是*pp++;那就是将pp指针当前所指向的单元内容递增,pp指针没...
初学C语言的疑惑。请老师们细心指导,灰常感谢。满意了的话再加100分...
问题一:typedef structz 这个函数我不太懂,书上有点抽象;typedef是表示重新定义一个类型,后面跟着struct就是意味着这个新的类型是一个结构,合起来就是说,通过typedef重新定一个类型,类型的名字叫做“GPIO_InitTypeDef”,这个类型是一个结构体,这个问题明白了吗?那么后面所有涉及到GPIO_InitTypeDef的...
c语言基础问题if,break怎么跳的,这个程序看不明白?
c语言中break是什么意思?break在switch(开关语句)中在执行一条case后跳出语句的作用。break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的...
一个概率的问题,想不大明白了。
如果一开始就只有A和B,那么这两者的概率就都是50 但是现在有ABC三个门,C是在你做出选择后才去掉的,这个信息必须考虑进去 分析如下:有三个门时,A门有苹果的概率是33.3%,B和C门有苹果的概率是66.7%。现在C门的概率变成了0%,所以B门的概率是66.7%。我自己也不确定对错,难免有凑答案之嫌...