无法使用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);
    
    
    }