我读到当我们有指针成员和定义基类时需要定义析构函数,但我不确定我是否完全理解.我不确定的一件事是,定义默认构造函数是否无用,因为默认情况下我们总是给出一个默认构造函数.另外,我不确定是否需要定义默认构造函数来实现RAII原则(我们只需要将资源分配放在构造函数中而不是定义任何析构函数吗?).
class A
{
public:
~Account()
{
delete [] brandname;
delete b;
//do we need to define it?
};
something(){} =0; //virtual function (reason #1: base class)
private:
char *brandname; //c-style string, which is a pointer member (reason #2: has a pointer member)
B* b; //instance of class B, which is a pointer member (reason #2)
vector<B*> vec; //what about this?
}
class B: public A
{
public something()
{
cout << "nothing" << endl;
}
//in all other cases …Run Code Online (Sandbox Code Playgroud) class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
};
Run Code Online (Sandbox Code Playgroud)
对不起,这个问题可能听起来很愚蠢,但我在解析标题时遇到了问题.有人能用英语描述标题的实际含义吗?对我来说,首先看起来很奇怪的是关键字virtual.该myexception班是不是一个基类,从已经实施的继承exception类,所以为什么还要用virtual在这里?我猜const是返回类型是一个c风格的字符串是const,另一个const是确保这个对象不能被修改(有人可以告诉我该对象可能是什么?).我不知道究竟throw()是什么,从未见过这种语法.

我在类路径中添加了常见的lang jar文件,但是当我编译它时说:
错误:包org.apache.commons.lang不存在
我试着按照下面描述的步骤:
http://oopbook.com/java-classpath-2/classpath-in-jcreator/
但我不这样做不行.是编辑器不能正常工作还是其他东西?