小编use*_*009的帖子

我们什么时候需要定义析构函数?

我读到当我们有指针成员和定义基类时需要定义析构函数,但我不确定我是否完全理解.我不确定的一件事是,定义默认构造函数是否无用,因为默认情况下我们总是给出一个默认构造函数.另外,我不确定是否需要定义默认构造函数来实现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)

c++ destructor

24
推荐指数
3
解决办法
4万
查看次数

这个头的含义是什么(virtual const char*what()const throw())?

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()是什么,从未见过这种语法.

c++ exception

14
推荐指数
1
解决办法
5587
查看次数

为什么我无法导入org.apache.commons.lang.StringUtils?

在此输入图像描述

我在类路径中添加了常见的lang jar文件,但是当我编译它时说:

错误:包org.apache.commons.lang不存在

我试着按照下面描述的步骤:

http://oopbook.com/java-classpath-2/classpath-in-jcreator/

但我不这样做不行.是编辑器不能正常工作还是其他东西?

java classpath

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

标签 统计

c++ ×2

classpath ×1

destructor ×1

exception ×1

java ×1