struct A{
virtual void what() { cout << "Base" << endl; };
};
struct B : A {
virtual void what() { cout << "Sub" << endl; };
int m;
B() : m(10) {};
B(const A & x) : m(50) {};
};
void main() {
B b1;
B b2 = b1;
cout << "Number: "
<< b2.m << endl;
};
Run Code Online (Sandbox Code Playgroud)
为什么不是b2.m = 50?我正在尝试复制一个b-object,我有复制构造函数B(const A&x):m(50).我是否需要为派生类屁股做一个复制c'tor?像B(const B&x)?? 我认为既然一个b对象有一个部分,我们可以使用B(const A&x):m(50)而不是默认的构造函数:: S
如果您具有带有A对象参数的函数,则可以发送B对象.它与拷贝构造函数有什么不同?
如何指定带字符串的类型?我的意思是:
string s = "int";
Vector<s> vec;
Run Code Online (Sandbox Code Playgroud)
我希望vec成为vector<int>.这可能吗?
我想创建一个用户可以键入字符串的类,并创建具有该类型的向量.
如果你有一个清除数组中所有元素的clear()函数,你是否使用void类型或referens到你正在使用的类型并返回*this.
防爆.
void Vector<T>::clear() {
}
Run Code Online (Sandbox Code Playgroud)
要么
Vector& Vector<T>::clear(){
return *this
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白何时返回"this"以及何时使用void类型.
为什么要在具有两个以上级别的继承层次结构中声明非虚函数?有人可以给我一个例子吗?
我知道区别是什么和发生了什么,但我无法真正理解为什么以及何时想要这样做.