#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也说会有编译错误,但它编译.标准有变化吗?
#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 解决了这个问题,但如何解决?即使我们没有多重继承,我们是否可以始终编写公共虚拟以确保安全。
#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)