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