小编STL*_*mer的帖子

这是编译错误typedef int(*j)()throw(A)?

#include <iostream>

class A {};

typedef int (*j)() throw(A);  

int f() 
{
    std::cout << "function f" << std::endl;
    return 0;
}

int main()
{ 
    j y = f;
    y();
}
Run Code Online (Sandbox Code Playgroud)

在所有站点和Stroustrup也说会有编译错误,但它编译.标准有变化吗?

c++ typedef visual-studio-2012

6
推荐指数
1
解决办法
270
查看次数

类 A:public virtual B 和类 A:public B 有什么区别

#include<iostream>
using namespace std;

class base
{
    public:
      virtual void f(){}
};

class middle1:public base
{};

class middle2:public base
{};

class derive:public middle1,public middle2
{};



int main()
{
    derive* pd=new derive();
    pd->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道 virtual 解决了这个问题,但如何解决?即使我们没有多重继承,我们是否可以始终编写公共虚拟以确保安全。

c++ virtual multiple-inheritance

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

resize()和reserve()有什么区别?

#include<iostream>
using namespace std;
#include<vector>
#include "s.h"


template<class T> 
void f(vector<T> a)
{
    cout << "size  " << a.size() << endl;
    cout << "capacity  " << a.capacity() << endl << endl;
}


int main()
{
    vector<int> s(10,5);
    f(s);
    s.resize(50);
    f(s);
    s.reserve(150);
    f(s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为resize()会改变大小,而reserve()会改变容量,但在我的例子中,reserve()不会改变capasity,为什么?我的第二个问题 - assign()的含义是什么?我可以用operator =()做同样的事吗?

// 10 10
// 50 50 
// 50 50
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

0
推荐指数
1
解决办法
3100
查看次数