首页 > 代码库 > 参数列表调用子类构造函数
参数列表调用子类构造函数
有时候,基类构造函数是带有参数,而子类构造函数是不带参数的,如下:class Animal{public: Animal(int width, int height) { this->width = width; this->height = height; }private: int width, height;};class Cat:public Animal{public: Cat() { cout << "init cat" << endl; }};在建立Cat类对象时,编译出错:C:\Documents and Settings\Administrator\桌面\abc\Text1.cpp(104) : error C2512: ‘Animal‘ : no appropriate default constructor available解决这个问题应该在Cat的构造函数中显式调用基类的带参构造函数。因为在基类中定义了带参构造函数,编译器不会提供默认构造函数。(或者可以在基类中增加一个不带参数的构造函数)这个问题将解决。下面采用的是调用基类带参构造函数的方式:class Cat:public Animal{public: Cat():Animal(100,200) { cout << "init cat" << endl; }//参数列表调用子类构造函数用法};即在构造函数的后面增加一个冒号,后面是基类的构造函数。这种方式同样可以用来初始化类中的常量。由于在类定义中不允许对成员进行初始化,常量也不允许。如下所示:class Cat:public Animal{public: Cat():Animal(100,200),Age(2),IsLikeFish(true) { cout << "init cat" << endl; }private: const int Age; const bool IsLikeFish;};
参数列表调用子类构造函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。