无法使用c+;中的参数从派生类调用基类构造函数+; 我在DEVC++ C++中的C++中有以下场景 class base{ int i=0; public: base(){ cout<<"base default constructor"<<endl; } base(int i){ cout<<"base with int"<<endl; } }; class derive : public base{ int j; public: derive(){ cout<<"derive default"; } derive(int i){ int k=5; base(k);//////error cout<<"derived with int "<<i<<endl; } void fun(int i){ cout<<"finction "<<i<<endl; } }; int main() { derive d(9); } 类基{ int i=0; 公众: base(){ cout
如果在隐式参数上调用派生类中的基构造函数,则需要按如下方式执行:无法使用c+;中的参数从派生类调用基类构造函数+; 我在DEVC++ C++中的C++中有以下场景 class base{ int i=0; public: base(){ cout<<"base default constructor"<<endl; } base(int i){ cout<<"base with int"<<endl; } }; class derive : public base{ int j; public: derive(){ cout<<"derive default"; } derive(int i){ int k=5; base(k);//////error cout<<"derived with int "<<i<<endl; } void fun(int i){ cout<<"finction "<<i<<endl; } }; int main() { derive d(9); } 类基{ int i=0; 公众: base(){ cout,c++,inheritance,constructor,visibility,derived-class,C++,Inheritance,Constructor,Visibility,Derived Class,如果在隐式参数上调用派生类中的基构造函数,则需要按如下方式执行: 派生(inti):基(i){ 在main() //创建显式对象并传递整数参数。然后重试 还可以在派生->基中传递特定的整数值。 派生 base(8); 并始终打印程序中行为怪异的变量值\include #include <iostream> using namespace std; class base{ public: base(){ cout<<"base default
派生(inti):基(i){
在main()
//创建显式对象并传递整数参数。然后重试
还可以在派生->基中传递特定的整数值。
派生
base(8);
并始终打印程序中行为怪异的变量值\include
#include <iostream>
using namespace std;
class base{
public:
base(){
cout<<"base default constructor"<<endl;
}
base(int i){
cout<<"base with int "<<i<<endl;
}
};
class derive : public base{
public:
int j;
int k;
derive(){
cout<<"derive default\n";
}
derive(int i){
k=5;
base(this->k);//////error
cout<<"derived with int "<<i<<endl;
}
void fun(int i){
cout<<"finction "<<i<<endl;
}
};
int main()
{
derive p(10);
}
使用名称空间std;
阶级基础{
公众:
base(){
cout对于base(k)
可以有两种解释:
这可能是一个临时的创造
它可以是一个变量声明:变量名可以在括号中
在这两个选项中,编译器使用第二个选项:如果某个东西可以是声明或表达式,则选择该声明。这与相关,尽管不是那样。其效果是,在您使用base(k);
时尝试定义类型为base
的名为k
的变量
您可以使用以下方法之一消除含义的歧义:
(基(k));
base{k};
如果base
也有一个构造函数采用std::initializer\u list
,这两个可以有不同的含义。“DEV c++”不是编译器。您好,是的,它是临时的,我没有初始化构造函数。但是我想知道为什么base(5)或base(j)在派生()中工作,而不是base(i)。请解释一下这个答案。只有代码的答案大多没有多大价值。谢谢你!继续努力!
base(8);
#include <iostream>
using namespace std;
class base{
public:
base(){
cout<<"base default constructor"<<endl;
}
base(int i){
cout<<"base with int "<<i<<endl;
}
};
class derive : public base{
public:
int j;
int k;
derive(){
cout<<"derive default\n";
}
derive(int i){
k=5;
base(this->k);//////error
cout<<"derived with int "<<i<<endl;
}
void fun(int i){
cout<<"finction "<<i<<endl;
}
};
int main()
{
derive p(10);
}