wanzi0933
2015-11-02 03:02
采纳率: 100%
浏览 2.0k

C++类的对象问题,到底是创建对象还是局部变量

我定义了一个Cat类,然后不清楚Cat Frisky与Cat Frisky()的区别,本来以为前者是定义常规局部变量,将调用析构函数,后者是定义的类的对象。刚刚遇到一个前者是创建了一个类对象,实在搞糊涂了。。求大神助攻小白,大恩不言谢!!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • a7777777888 2015-11-02 16:48
    已采纳

    Cat Frisky; 调用默认构造函数
    Cat Frisky(); 调用无参数的构造函数(即默认构造函数)
    Cat Frisky(x, y); 调用需要两个参数的构造函数(假设存在该构造函数)
    三者都会创建对象

    已采纳该答案
    打赏 评论
  • oyljerry 2015-11-02 03:14

    前者是定一个类的实例,缺省构造函数,后者可以传递构造函数参数等

    打赏 评论
  • xpbobcsdn 2015-11-02 03:27

    准确来说构造对象是需要加()显示的告诉编译器你调用了构造函数,不写()的话,编译器会自己处理找你调用的构造函数

    打赏 评论
  • JuggLee 2015-11-02 04:17

    首先你这个问题就不太对,什么叫“对象”?什么叫“局部变量”?
    Cat Frisky与Cat Frisky()都会调用构造函数创建一个Cat类的对象,即实例,至于哪个构造函数就是@xpbobcsdn所说的了。

    打赏 评论
  • hanshuizhizi 2015-11-03 02:00

    a7777777888的回答靠谱的

    打赏 评论
  • JuggLee 2015-11-03 02:46

    我用vs调试了一下,发现Cat Frisky()这种写法属于无效代码一样。

    打赏 评论
  • phnumber 2015-11-06 09:50

    一个是类的名称,一个是构造函数

    打赏 评论
  • John_ToString 2015-11-10 01:17

    纠正一下,Cat Frisky();这种写法是有问题的,而且编译报错,因为编译器会把他当做函数来处理,所以说如果想显示的调用默认构造就必须用Cat Frisky;

    打赏 评论

相关推荐 更多相似问题