为了账号安全,请及时绑定邮箱和手机立即绑定

越听越晕了

问题:Shape *shape1 = new Circle(3, 5, 4.0);

与Shape *shape1;

shape1 = new Circle(3, 5, 4.0);

一样吗?请详细说明什么含义?谢谢!


正在回答

3 回答

前者是声明后初始化,后者是声明后赋值

0 回复 有任何疑惑可以回复我~

我觉得是一样的

0 回复 有任何疑惑可以回复我~

(Shape *) p  

p是一个指针,标示p将指向一个Shape * 类型的值。

new Circle(3, 5, 4.0);  //在堆内存创建一个Circle对象,返回一个内存地址【也就是指针】

p = new Circle(3, 5, 4.0);//这个地址赋值给p。【内存地址就像 0f23aff7这个一样。】【这个地址里面存着这个对象】


回答你的问题:

(1)

Shape *shape1 = new Circle(3, 5, 4.0);//在堆内存创建一个Circle对象,返回一个内存地址【也就是指针】,地址传给shape1

(2)

Shape *shape1;//声明一个指针【空的】

shape1 = new Circle(3, 5, 4.0);//创建了一个对象,返回一个地址,传给shape1



类比:

int a = 1;

或者

int a ;

a = 1;

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

越听越晕了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信