小编lin*_*ker的帖子

C++在空类中编写和调用的函数是什么?

Effective C++一书中,我看到了以下段落:

结果,如果你写

class Empty{};
Run Code Online (Sandbox Code Playgroud)

它基本上和你写的一样:

class Empty {
public:
    Empty() { ... }
    Empty(const Empty& rhs) { ... }
    ~Empty() { ... }
    Empty& operator=(const Empty& rhs) { ... } // copy assignment operator
};
Run Code Online (Sandbox Code Playgroud)

以下代码将导致生成每个函数:

Empty e1;
Empty e2(e1);
e2 = e1;
Run Code Online (Sandbox Code Playgroud)

但是在拆解通过编译上面的代码创建的可执行文件之后,我意识到并非如此:没有任何函数被调用.

这是主要的汇编代码:

00000000004006cd <main>:
  4006cd:       55                      push   %rbp
  4006ce:       48 89 e5                mov    %rsp,%rbp
  4006d1:       b8 00 00 00 00          mov    $0x0,%eax
  4006d6:       5d                      pop    %rbp
  4006d7:       c3                      retq 
Run Code Online (Sandbox Code Playgroud)

段中没有任何名为"Empty"的函数.text.

那么在我们调用构造函数或赋值空类之后,编译器的行为究竟是什么?这本书说它会产生一些功能吗?如果是这样,他们存放在哪里?

c++ default-constructor effective-c++ empty-class

43
推荐指数
3
解决办法
3287
查看次数

对于从虚拟基类继承的虚函数,什么是"虚拟thunk"?

当我尝试访问从虚拟基类继承的派生类对象的内存布局时,出了点问题.
编程环境:GNU/Linux 3.19.0-32-generic,x86_64
编译器:gcc 4.8.4

//virtual base class
class Base {
public :
    virtual void f() {
        cout << "Base::f()" << endl;
    }
private:
    long x;
};

//derived class
class Derived : public virtual Base {
public:
    virtual void f() {
        cout << "Derived::f()" << endl;
    }
private:
    long y;
};

int main() {
    typedef void (*FUNC)(void);
    Derived d;

    //In my machine, sizeof(long) == sizeof(pointers). My code below is neither portable nor concise. You can just read the annotation.

    //dereference …
Run Code Online (Sandbox Code Playgroud)

c++ g++ abi virtual-inheritance vtable

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

如何在不使用标签的情况下跳转到特定行?

假设我有一个返回的调用函数,我可以让它返回到返回地址之前的 x 行吗?例如。

call foo --> line 72 - calling bar will return here.
mov ax,1
call bar --> line 74

bar:
mov ax,2
ret (-2)
Run Code Online (Sandbox Code Playgroud)

我的目标是创建一个可调用的函数,该函数将始终返回到调用地址之前的 2 行,而不必使用十亿个标志和标签。

assembly x86-16

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

PHP如何设置大写字符等于小写字符

我在文本中创建计数重复字符的函数,我有大写和小写字符的问题,大写不计算,因为与小写不同,我的问题是,我如何计算大写字符?

    <?php
function fillCharCounts($str, $count) 
{ 
    for ($i = 0; $i < strlen($str); $i++) 
        $count[ord($str[$i])]++; 

    for ($i = 0; $i < 256; $i++) 
        if($count[$i] > 1) 
            echo chr($i) . " " .  
                         ($count[$i]) . "\n"; 
} 

function printDups($str) 
{ 
    $count = array(); 
    for ($i = 0; $i < 256; $i++) 
    $count[$i] = 0; 
    fillCharCounts($str, $count); 


} 

$str = "Nama saya Adhi Dewandaru"; 
$str = preg_replace("/([^A-Za-z])/","",$str); 

printDups($str); 
Run Code Online (Sandbox Code Playgroud)

但输出总是显示

 a 6
 d 2
Run Code Online (Sandbox Code Playgroud)

预期输出是

a 7
d 3
Run Code Online (Sandbox Code Playgroud)

php

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

错误无法找到 node_modules/cordova-plugin-whitelist

我正在尝试构建一个 ionic 项目,当我尝试使用该命令时,
ionic capacitor run android
我收到一条错误消息,
[error] Unable to find node_modules/cordova-plugin-whitelist. Are you sure cordova-plugin-whitelist is installed? [ERROR] An error occurred while running subprocess capacitor.
我已检查是否安装了cordova-plugin-whitelist,它是
Plugin "cordova-plugin-whitelist" already installed on android. Adding cordova-plugin-whitelist to package.json
如何解决这个问题的?

angularjs ionic-framework ionic2 ionic3 ionic4

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

Flutter - 在新行中设置文本

我是 flutter 的新手,现在我正在设计一个应用程序

但在这部分项目中,我想在标题下方的新行中设置价格,我在这里寻找类似的问题,但我无法解决

这是代码:

Widget build(BuildContext context) {
return Card(
  child: Hero(
      tag: prod_name,
      child: Material(
        child: InkWell(
          onTap: () {},
          child: GridTile(
              footer: Container(
                color: Colors.white,
                child: ListTile(
                  leading: Text(
                    prod_name,
                    textAlign: TextAlign.left,
                    style: TextStyle(color: Colors.grey, fontSize: 12),
                  ),
                  title: Text("\$$prod_old_price"),
                  subtitle: Text(
                    "\$$prod_price",
                    style: TextStyle(fontWeight: FontWeight.w800,),
                  ),
                ),
              ),
              child: Image.asset(
                prod_pic,
                fit: BoxFit.fitHeight,
              )),
        ),
      )),
);
Run Code Online (Sandbox Code Playgroud)

}

text frameworks flutter

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

如何编写 dplyr::filter 函数

dplyr过滤函数源代码,我无法得到,当我点击filter()时,源代码是UseMethod(),当我调试时,什么都没有出现;

我的测试代码:

过滤器(鸢尾花,萼片长度>7.1)

所以我尝试编写自己的函数

第一个版本:

   filter<-function(data,condition){
attach(data)
r<- data[which(condition,)]
detach(data)
return (r)
}
Run Code Online (Sandbox Code Playgroud)

它有效,当我使用 system.time() 比较 dplyr:filter 和 mine:filter 时,我的松散,比 dplyr 花费更多的时间;

第二个版本:

   filter<-function(data,condition){
r<-with(data,data[which(condition),])
return (r)
}
Run Code Online (Sandbox Code Playgroud)

它报告错误,未找到 Sepal.Length。

我知道是条件参数的问题,
如果我直接使用 with(irirs,irirs[which(Sepal.Length>7.1),]) ,它可以工作,但我需要一个自己的过滤器功能

我有两个问题:

  • 一种。如何编写有效的过滤器或修复我的第二个版本代码的问题。
  • 湾 如何读取函数源代码,如 usemethod("func")

多谢!

r dplyr

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