小编InQ*_*ive的帖子

Ostream <<运算符重载和它的返回类型

我学会了如何对Stream Insertion Operator进行运算符重载.但仍有一个疑问.

#include<iostream>

class INT
{
    int i;
    friend std::ostream& operator<<(std::ostream&,INT&);
public:
    INT():i(100){}
};

std::ostream& operator<<(std::ostream& obj,INT & data)
{
   obj<<data.i;
   return obj;
}

int main()
{
    INT obj;
    std::cout<<obj;
}
Run Code Online (Sandbox Code Playgroud)

有什么意义return obj;

回报有进一步的用处吗?

是我们不得不做的回报,因为运营商<<语法没有任何用处的?

c++ operator-overloading

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

除零在虚拟析构函数中工作正常

#include <iostream>
using namespace std;
static int i=1;
class Parent
{
public:
    virtual ~Parent(){10/i;}
};

class Child: public Parent
{
public:
    virtual ~Child(){--i;}
};

int main()
{
    Parent *ptr = new Parent;
    Parent *ptr1 = new Child;
    delete ptr;
    delete ptr1;
    //cout<<10/i;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么Parent类的虚析构函数不提供任何运行时错误?而取消注释时,代码的注释部分会引发错误.

c++ virtual-destructor

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

在catch块异常中使用引用语法无意义的使用?

我的示例代码:

#include<iostream>
using namespace std;

class Test{ public: int set;};
Test T;

int main()
{
    T.set = 100;
    try{
        throw T;
    }
    catch(Test &T)
    {
        T.set = 0;
    }
    cout<<T.set<<endl;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

这里我通过引用捕获抛出的T对象并在catch块中修改它的值.为什么在块之后T对象仍然打印?在这种情况下,参考语法对值的传递有什么用?100catch

编译器:gcc 5.1.0

c++ exception pass-by-reference

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

std::thread::hardware_concurrency 是一个,我应该在我的系统上实现线程

当我cout std::thread::hardware_concurrency给出 1 时。

但是来自cppreference

返回实现支持的并发线程数。该值应仅被视为一个提示。

如果目标只是我的系统,那么在我的系统上实现线程是否有任何用处?

multithreading c++11

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

如何计算字符串开头的零数

我有一个字符串:

"0011HelloWor00ld001"
Run Code Online (Sandbox Code Playgroud)

如何计算字符串开头的零数?例如,上面的字符串应该返回2.

我试过.match(/^[0]+/).size但它不起作用.

ruby regex

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

如何获得 ruby​​ 有理数分子?

从 Rational 类中,我得到了分母的访问器。但我找不到提名者访问器。

Rational(22/7).denominator give 7
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到22类似的?

Rational(22/7).**numerator**
Run Code Online (Sandbox Code Playgroud)

ruby

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

proc 返回与 lambda 返回

为什么 ruby​​ 中的 Proc 在执行调用 Proc 的方法中的剩余代码之前返回?

def hello
  a = Proc.new{ return }
  a.call
  puts "Hello"
end


def proc
  hello
  puts "Proc"
end
Run Code Online (Sandbox Code Playgroud)

这里return将跳过puts "Hello"并仅打印puts "Proc"

lambda打印puts "Hello"也是如此。

这是什么原因呢?

ruby lambda proc

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

如何让HttpResponse打印新行?

def index(request):
    review = Review.objects.all()
    output = "\n".join([each_review.review_text for each_review in review])

    return HttpResponse(output)
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

"This book 1 is very great This book 2 is very great This book 3 is very great This book 4 is very great This book 5 is very great This something is very great"

但它不打印它们之间的新线.如何才能实现这一目标HttpResponse

django httpresponse

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

classmethod可以改变类的状态,这是什么意思?

编辑:我不是问什么是 classmethod 和 staticmethod 或它们之间的区别。只是问这个问题是为了澄清班级状态的含义。

\n\n

我刚刚开始使用Python。在浏览@classmethod和的教程时@staticmethod,我在多个网站中发现了类似于以下内容的声明。

\n\n

geekforgeeks中提到的

\n\n
\n

类方法可以访问或修改类状态,而静态方法\n 不能\xe2\x80\x99 访问或修改类状态。

\n
\n\n

教程点

\n\n
\n

类方法可以访问和修改类状态。静态方法无法访问或修改类状态。

\n
\n\n
\n\n

阶级状态是什么意思?这是否意味着有一种方法可以使用类方法修改所有对象的值,因为当类状态更改时,它应该影响从该类创建的所有对象?我只能找到使用 @classmethods 创建工厂方法,并且我不认为这是某种类状态更改。

\n\n

I am an advanced C++ programmer. Some related explanation would be good , if possible.

\n\n

Edit: The question which marked this as duplicate of it doesn\'t mention the class states. I read both that questions and its duplicate before asking this.

\n\n

One example I tried:

\n\n …

python python-decorators

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

为什么 int32_t 和 int16_t 在 printf 输出中具有相同的位数?

#include <stdio.h>
#include <stdint.h>

int main()
{
  uint32_t a = 0xF0FF1FFF;
  printf("a = 0x%x\n",a);
  uint16_t b = a;
  printf("b = 0x%x\n",b);


  int32_t c = 0xF0FF8FFF;
  printf("c = 0x%x\n",c);
  int16_t d = c;
  printf("d = 0x%x\n",d);

  int32_t e = d;
  printf("e = 0x%x\n",e);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a = 0xf0ff1fff
b = 0x1fff
c = 0xf0ff8fff
d = 0xffff8fff
e = 0xffff8fff
Run Code Online (Sandbox Code Playgroud)

在这个例子中,为什么d打印 32 位与 不同b

c type-conversion

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