小编Eri*_*ric的帖子

C++ 20 指定初始化遗漏的字段是否保证初始化为零?

当使用 C++ 20 指定的初始化器时,不需要为每个字段指定一个值:

struct Foo
{
    int i;
    void* p;
};
Run Code Online (Sandbox Code Playgroud)

可以这样初始化:

Foo bar = {
    .i = 22
};
Run Code Online (Sandbox Code Playgroud)

遗漏的字段是否为零初始化?所以在这个例子中p保证被设置为nullptr?

c++ c++20

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

C2x 中删除 K&R 函数定义的影响

即将推出的 C2x 标准的变化之一似乎是

删除 K&R 函数定义

据我了解,K&R 风格定义是我们必须声明一个不带参数的函数的原因

void foo(void);
Run Code Online (Sandbox Code Playgroud)

代替

void foo();
Run Code Online (Sandbox Code Playgroud)

在 C2x 中删除 K&R 风格是否意味着我们现在可以/应该简单地对不带参数的函数使用空括号,就像其他语言一样?

c

6
推荐指数
2
解决办法
686
查看次数

为什么不隐式调用基类的复制构造函数?

根据我的理解,当创建派生类的对象时,基类构造函数会自动调用(如果存在没有参数的构造函数)。复制构造函数似乎不是这种情况:

#include <iostream>

class Base
{
public:

    Base() 
    { 
        std::cout << "Base Constructor called" << std::endl; 
    }   

    Base(const Base& ref)
    {
        std::cout << "Base Copy Constructor called" << std::endl; 
    }
};

class Derived : Base
{
public:

    Derived() 
    { 
        std::cout << "Derived Constructor called" << std::endl; 
    }

    Derived(const Derived& ref) //: Base(ref) // <- without this Base copy constructor doesnt get called
    {
        std::cout << "Derived Copy Constructor called" << std::endl; 
    }
};

int main()
{
    Derived d1;

    Derived d2 …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance copy

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

标签 统计

c++ ×2

c ×1

c++20 ×1

copy ×1

inheritance ×1