小编use*_*379的帖子

如何打破嵌套循环?

如果我使用一个break语句,它只会破坏内部循环,我需要使用一些标志来打破外部循环.但是如果有许多嵌套循环,代码看起来不会很好.

还有其他方法可以打破所有循环吗?(请不要使用goto stmt.)

for(int i = 0; i < 1000; i++) {
   for(int j = 0; j < 1000; j++) {
       if(condition) {
            // both of the loops need to break and control will go to stmt2
       }
   }

}

stmt2
Run Code Online (Sandbox Code Playgroud)

c break nested-loops

81
推荐指数
8
解决办法
14万
查看次数

为什么允许类具有自身的静态成员,而不是非静态成员?

class base {
public:
    base a;
};
Run Code Online (Sandbox Code Playgroud)

它给出了编译错误.

class base {
public:
    static base a;
};
Run Code Online (Sandbox Code Playgroud)

而这段代码不会给出编译错误

c++ object static-members

26
推荐指数
2
解决办法
2592
查看次数

如果类成员是向量,我们是否应该显式编写复制构造函数?

struct myType {
    vector<char*> ls;
};
Run Code Online (Sandbox Code Playgroud)

这里ls有指针char.如果myType没有提供用户定义的复制构造函数,那么myType默认的复制构造函数会做一个深层复制ls吗?

c++ stl

8
推荐指数
2
解决办法
5901
查看次数

当派生类没有覆盖虚函数时,为什么需要vptr?

class base {
public:
    void virtual fn(int i) {
        cout << "base" << endl;
    }
};

class der : public base{
    public:
    void  fn(char i) {
        cout << "der" << endl;
    }
};

int main() {

    base* p = new der;
    char i = 5;
    p->fn(i);
    cout << sizeof(base);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里定义的函数fn的签名与base类中fn()定义的函数的签名不同,der虽然函数名称相同.因此,der类中定义的base函数隐藏了类函数fn().所以der fn的类版本不能通过调用来p->fn(i)调用; 没事.

我的观点是,为什么sizeofbase或者der4如果没有用的VTABLE的指针 …

c++ overriding virtual-functions vptr

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

拥有一个ref类型的类成员的目的是什么?

我有这个代码,但它不是一个实际的例子.

防爆.

class Animal
{
   int i;
   int& ref;
   public:
   Animal() : ref(i)
   {
   }
};
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一个真实的例子,其中ref需要作为一个类成员,以便我能更好地理解它吗?

c++

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

C标准库是静态库还是动态库?

C标准库函数(ex.prinf,scanf)是否被视为静态库函数或动态库函数?

c

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

设置一个回调函数,它是一个类的非静态成员函数

typedef void (*CALLBACK)();
class Filter
{
public:
     void callback()
    {
        cout << "callback" << endl;
    }
};

void SetCallback(CALLBACK pCallBack )
{
    pCallBack();
}



int main()
{
    Filter f;
    SetCallback(f.callback);
}
Run Code Online (Sandbox Code Playgroud)

主要是SetCallback(f.callback); 声明给出了错误.任何人都可以帮我解决这个问题

c++

5
推荐指数
3
解决办法
3548
查看次数

如果模板包含虚函数,是否安全?

模板的早期绑定和虚函数的后期绑定.因此,如果模板包含虚函数,是否安全?

template<typename T> 
class base {
public:
    T data;
    virtual void fn(T t){}
};
Run Code Online (Sandbox Code Playgroud)

c++ virtual

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

如果类至少包含一个虚函数,是否总是需要将析构函数声明为虚函数?

可能的重复:
何时使用虚拟析构函数?

如果一个类(具有虚函数)及其继承类的所有数据成员都是非指针类型(意味着它不能保存任何动态内存),是否需要将析构函数声明为虚函数?

例子

class base {
    int x;
public:
    virtual void fn(){}

};

class der: public base {
    int y;
public:
    void fn(){}

};
Run Code Online (Sandbox Code Playgroud)

这里我们需要一个虚拟析构函数吗?

c++

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

在C++中使用组合时如何决定类属性应该是指针还是值?

请参阅此示例。

大学的班级有一个主任和很多学生所以我的班级会是这样的

A)

class University {
    Director d;
    Student list[1000];
};
Run Code Online (Sandbox Code Playgroud)

或者

b)

class University {
    Director* d;
    Student* list[1000];
};
Run Code Online (Sandbox Code Playgroud)

我的问题是如何决定类属性应该是指针还是值。

c++ pointers object

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