琴长不过时光 发表于 2020-3-27 14:50:11

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

#include "iostream"
using std::endl;
using std::cout;
using std::cin;

class Object
{
protected:
        int a;
        int b;
public:
        Object(int a, int b)
        {
                this->a = a;
                this->b = b;
                cout << "Object 构造执行" << endl;
        }
public:
        ~Object()
        {
                cout << "Object 析构执行" << endl;
        }
};

class Parent :public Object
{
protected:
        char* p;
public:
        Parent(char* p) :Object(1, 2)
        {
                this->p = p;
                cout << "父类的构造函数" << p << endl;
        }
public:
        ~Parent()
        {
                cout << "父类的析构函数" << p << endl;
        }
public:
        void printParent()
        {
                cout << "我是父亲" << endl;
        }
};

class Child :public Parent
{
protected:
        char* myp;
        Object obj1;
        Object obj2;
public:
        Child(char* p) :Parent(p), obj1(3, 4), obj2(5, 6)
        {
                this->myp = p;
                cout << "子类构造函数" << myp << endl;
        }
public:
        ~Child()
        {
                cout << "子类析构函数" << myp << endl;
        }
public:
        void printChild()
        {
                cout << "我是儿子" << endl;
        }
};

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

void main()
{
        objPlay();
        system("pause");
}

sunrise085 发表于 2020-3-27 15:03:33

因为你的构造函数中的形参是一个char类型的指针,而你传递过去的"abdbnkhg"是一个字符串常量,这种情况下,对于有的编译器会报出warnring,但是有的编译器则会报错。
你把这个字符串拿出来赋值给一个char数组,一般就不会报错了,那样就不是字符串常量而是字符变量数组了,而变量数组则可以作为char指针进行传参。
void objPlay()
{
    char a[]="abdbnkhg";
    Child c(a);//问题 这里显示出错 我这代码照视频打的 视频上运行通过 我却运行不了 那个图片显示编译后的错误
}
页: [1]
查看完整版本: 小白求助 继承中的构造函数