小编spa*_*pab的帖子

从C++派生类的构造函数修改基类的数据成员

我无法理解这段代码的输出。我希望10被打印,但输出是85. 有人可以解释发生了什么吗?

#include <iostream>
using namespace std;
class A
{  
    public:   
        int x=3;
        A(int a) : x(a) {}
};

class B: public A
{   
    public:  
        int y = 10;
        B() : A(y) {}
};

int main()
{
    B b;    
    cout << b.x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,将其更改为:

class B: public A
{   
    public:  
        int y = 10;
        B(int s) : A(s) {}
};

int main()
{
    B b(4); 
    cout << b.x << endl;
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ c++14

7
推荐指数
2
解决办法
410
查看次数

如何将 const unordered_map 中的值分配给另一个 const 变量 - C++

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

void fun(const unordered_map<int, vector<int>>& direct_paths) {
    const int var = direct_paths[1][0];
    cout << var;
}

int main()
{
    unordered_map<int, vector<int>> a;
    a[1] = vector<int> {1,2,3};
    fun(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码输出如下错误:

error: passing ‘const std::unordered_map<int, std::vector<int> >’ as ‘this’ argument discards qualifiers [-fpermissive]
  const int var = direct_paths[1][0];
                                ^
Run Code Online (Sandbox Code Playgroud)

其中,以下代码不输出任何编译错误:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

void fun(const vector<int>& direct_paths) {
    const int var = direct_paths[1];
    cout << var;
}

int main()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ unordered-map c++11

2
推荐指数
1
解决办法
61
查看次数

标签 统计

c++ ×2

c++11 ×1

c++14 ×1

unordered-map ×1