鱼C论坛

 找回密码
 立即注册
查看: 1923|回复: 3

[已解决]实例化一个对象时为什么没有调用默认构造函数

[复制链接]
发表于 2018-4-22 11:58:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. class moblie {
  2. private:
  3.         int speed;
  4.         int cost;
  5. public:
  6.         moblie() :speed(80), cost(100)
  7.         {
  8.                 cout << "speed:" << speed << "cost:" << cost << endl;
  9.         }
  10.         ~moblie(){}
  11. };
  12. int main()
  13. {
  14.         moblie mycar();
  15.         system("pause");
  16.     return 0;
  17. }
复制代码

其中的一段代码,程序运行后并没有调用默认构造函数,这是为什么?
最佳答案
2018-4-22 12:21:06
本帖最后由 溯影 于 2018-4-22 12:30 编辑

楼主的意思是不是这样的:
  1. #include <iostream>
  2. using namespace std;

  3. class moblie {
  4. private:
  5.         int speed;
  6.         int cost;
  7. public:
  8.         moblie(int s = 80, int c = 100){
  9.                 speed = s;
  10.                 cost = c;
  11.                 cout << "speed=" << speed << "cost=" << cost << endl;
  12.         }

  13.         ~moblie(){}
  14. };
  15. int main()
  16. {
  17.         moblie mycar;
  18.         cout << "执行完毕" << endl;
  19.         system("pause");
  20.         return 0;
  21. }
复制代码



要是直接是moblie mycar();的话,编译器会认为是一个函数的声明,估计这个楼主也是理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-4-22 12:11:06 | 显示全部楼层
moblie mycar
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-22 12:16:30 | 显示全部楼层

这个就对了,之前楼主写的那个方式就是相当于是
  1. moblie(){
  2. speed = 80;
  3. cose = 100;
  4. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-22 12:21:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 溯影 于 2018-4-22 12:30 编辑

楼主的意思是不是这样的:
  1. #include <iostream>
  2. using namespace std;

  3. class moblie {
  4. private:
  5.         int speed;
  6.         int cost;
  7. public:
  8.         moblie(int s = 80, int c = 100){
  9.                 speed = s;
  10.                 cost = c;
  11.                 cout << "speed=" << speed << "cost=" << cost << endl;
  12.         }

  13.         ~moblie(){}
  14. };
  15. int main()
  16. {
  17.         moblie mycar;
  18.         cout << "执行完毕" << endl;
  19.         system("pause");
  20.         return 0;
  21. }
复制代码



要是直接是moblie mycar();的话,编译器会认为是一个函数的声明,估计这个楼主也是理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表