鱼C论坛

 找回密码
 立即注册
查看: 2059|回复: 1

小白求助 继承中的构造函数

[复制链接]
发表于 2020-3-27 14:50:11 | 显示全部楼层 |阅读模式

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

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

x
  1. #include "iostream"
  2. using std::endl;
  3. using std::cout;
  4. using std::cin;

  5. class Object
  6. {
  7. protected:
  8.         int a;
  9.         int b;
  10. public:
  11.         Object(int a, int b)
  12.         {
  13.                 this->a = a;
  14.                 this->b = b;
  15.                 cout << "Object 构造执行" << endl;
  16.         }
  17. public:
  18.         ~Object()
  19.         {
  20.                 cout << "Object 析构执行" << endl;
  21.         }
  22. };

  23. class Parent :public Object
  24. {
  25. protected:
  26.         char* p;
  27. public:
  28.         Parent(char* p) :Object(1, 2)
  29.         {
  30.                 this->p = p;
  31.                 cout << "父类的构造函数" << p << endl;
  32.         }
  33. public:
  34.         ~Parent()
  35.         {
  36.                 cout << "父类的析构函数" << p << endl;
  37.         }
  38. public:
  39.         void printParent()
  40.         {
  41.                 cout << "我是父亲" << endl;
  42.         }
  43. };

  44. class Child :public Parent
  45. {
  46. protected:
  47.         char* myp;
  48.         Object obj1;
  49.         Object obj2;
  50. public:
  51.         Child(char* p) :Parent(p), obj1(3, 4), obj2(5, 6)
  52.         {
  53.                 this->myp = p;
  54.                 cout << "子类构造函数" << myp << endl;
  55.         }
  56. public:
  57.         ~Child()
  58.         {
  59.                 cout << "子类析构函数" << myp << endl;
  60.         }
  61. public:
  62.         void printChild()
  63.         {
  64.                 cout << "我是儿子" << endl;
  65.         }
  66. };

  67. void objPlay()
  68. {
  69.         Child c("abdbnkhg");//问题 这里显示出错 我这代码照视频打的 视频上运行通过 我却运行不了 那个图片显示编译后的错误
  70. }

  71. void main()
  72. {
  73.         objPlay();
  74.         system("pause");
  75. }
复制代码

继承中的构造函数

继承中的构造函数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-27 15:03:33 | 显示全部楼层
因为你的构造函数中的形参是一个char类型的指针,而你传递过去的"abdbnkhg"是一个字符串常量,这种情况下,对于有的编译器会报出warnring,但是有的编译器则会报错。
你把这个字符串拿出来赋值给一个char数组,一般就不会报错了,那样就不是字符串常量而是字符变量数组了,而变量数组则可以作为char指针进行传参。
  1. void objPlay()
  2. {
  3.     char a[]="abdbnkhg";
  4.     Child c(a);//问题 这里显示出错 我这代码照视频打的 视频上运行通过 我却运行不了 那个图片显示编译后的错误
  5. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 18:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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