基类指针可以指向派生类对象.如果没有铸造,为什么反之亦然?逻辑上,基类没有足够的派生类信息,但派生类也应该具有基类的信息.我在这里遗漏了一些基础知识.
以下是C Programming Just the FAQs一书的摘录.这不是错误的,因为Arrays永远不能通过引用传递吗?
VIII.6:如何通过值将数组传递给函数?
答案:通过在被调用函数中声明带有方括号(
[
和]
)的数组名称,数组可以按值传递给函数.调用函数时,只需将数组的地址(即数组的名称)传递给被调用的函数即可.例如,以下程序将数组传递x[]
给byval_func()
value 命名 的函数:该
int[]
参数告诉编译器该byval_func()
函数将采用一个参数 - 一个整数数组.byval_func()
调用该 函数时,将数组的地址传递给byval_func()
:Run Code Online (Sandbox Code Playgroud)byval_func(x);
由于数组是按值传递的,因此会生成数组的精确副本并将其放在堆栈中.然后被调用的函数接收该数组的副本并可以打印它.因为传递给的数组
byval_func()
是原始数组的副本,所以修改byval_func()
函数中的数组对原始数组没有影响.
请帮助我理解C++中转换运算符的确切运作方式.我在这里有一个简单的例子,我试图理解,虽然目前还不是很清楚编译器实际上是如何进行转换的.
class Example{
public:
Example();
Example(int val);
operator unsigned int();
~Example(){}
private:
int itsVal;
};
Example::Example():itsVal(0){}
Example::Example(int val):itsVal(val){}
Example::operator unsigned int (){
return (itsVal);
}
int main(){
int theInt = 5;
Example exObject = theInt; // here
Example ctr(5);
int theInt1 = ctr; // here
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我对此有一些困惑"可以将对象作为值传递给复制构造函数"编译器明确拒绝这一点,这意味着它是不可能的.你能帮我理解一下吗?
class Dummy{
Dummy(Dummy dummy){ // This is not possible
}
};
Run Code Online (Sandbox Code Playgroud)
那么为什么它会说"复制构造函数会在使用值传递时导致递归调用."
struct Dummy {
int x;
char y;
};
int main() {
struct Dummy dum;
dum.x = 10;
dum.y = 'a';
}
Run Code Online (Sandbox Code Playgroud)
如何在小端机器上布置结构构件?
它会是这样的吗?
0x1000 +0 +1 +2 +3
___________________
x: | 10 | 0 | 0 | 0 |
-------------------
y: | 'a'| 0 | 0 | 0 |
-------------------
0x1000 +4 +5 +6 +7
Run Code Online (Sandbox Code Playgroud)