如果我使用一个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) class base {
public:
base a;
};
Run Code Online (Sandbox Code Playgroud)
它给出了编译错误.
class base {
public:
static base a;
};
Run Code Online (Sandbox Code Playgroud)
而这段代码不会给出编译错误
struct myType {
vector<char*> ls;
};
Run Code Online (Sandbox Code Playgroud)
这里ls有指针char.如果myType没有提供用户定义的复制构造函数,那么myType默认的复制构造函数会做一个深层复制ls吗?
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)调用; 没事.
我的观点是,为什么sizeof类base或者der是4如果没有用的VTABLE的指针 …
我有这个代码,但它不是一个实际的例子.
防爆.
class Animal
{
int i;
int& ref;
public:
Animal() : ref(i)
{
}
};
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一个真实的例子,其中ref需要作为一个类成员,以便我能更好地理解它吗?
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); 声明给出了错误.任何人都可以帮我解决这个问题
模板的早期绑定和虚函数的后期绑定.因此,如果模板包含虚函数,是否安全?
template<typename T>
class base {
public:
T data;
virtual void fn(T t){}
};
Run Code Online (Sandbox Code Playgroud) 可能的重复:
何时使用虚拟析构函数?
如果一个类(具有虚函数)及其继承类的所有数据成员都是非指针类型(意味着它不能保存任何动态内存),是否需要将析构函数声明为虚函数?
例子
class base {
int x;
public:
virtual void fn(){}
};
class der: public base {
int y;
public:
void fn(){}
};
Run Code Online (Sandbox Code Playgroud)
这里我们需要一个虚拟析构函数吗?
请参阅此示例。
大学的班级有一个主任和很多学生所以我的班级会是这样的
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++ ×8
c ×2
object ×2
break ×1
nested-loops ×1
overriding ×1
pointers ×1
stl ×1
virtual ×1
vptr ×1