摘要:
malloc() 是一个以数字(字节)作为参数的函数; 它返回一个 void* 指向单元化存储。 new 是一个运算符,它接受一个类型和(可选)该类型的一组初始值设定项 作为它的论点; 它返回一个指向其类型的(可选)初始化对象的指针。 当您要分配用户定义类型的对象时,差异最为明显 具有独特的初始化语 阅读全文
摘要:
虽然语言不会阻止您这样做,但您永远不应该在使用 C++ new 运算符收到的块上使用 C free 函数。 始终对从 new 运算符接收的块使用 C++ delete 运算符,对从 new[] 运算符接收的块使用 delete[] 运算符。 new 运算符为您正在分配的数据类型执行构造函数,而 ne 阅读全文
摘要:
在C++中,NULL的定义是0,所以只是审美上的区别。 我更喜欢避免宏,所以我使用 0。 NULL 的另一个问题是人们有时会错误地认为它 不同于 0或不是整数。 在准标准代码中,NULL 有时被定义为 不合适的东西 因此必须避免。 现在这种情况不那么常见了。 如果一定要给空指针命名,就叫它nullp 阅读全文
摘要:
这取决于您要实现的目标: 如果要更改传递的对象,请通过引用调用或使用指针; 例如 void f(X&); 或void f(X*); 如果你不想更改传递的对象并且它很大,则通过 const 引用调用; 例如 void f(const X&); 否则,按值调用; 例如void f(X); “大”是什么意 阅读全文
摘要:
C++ 从 C 继承了指针,所以我不能在不导致严重的兼容性问题的情况下删除它们。 引用在很多方面都很有用,但我在 C++ 中引入它们的直接原因是为了支持运算符重载。 例如: void f1(const complex* x, const complex* y) // without referenc 阅读全文
摘要:
因为很多类并不是设计来作为基类使用的, 虚函数仅在用作派生类对象接口的类中有意义(通常分配在堆上并通过指针或引用访问)。 那么我什么时候应该声明一个析构函数为虚拟的呢? 每当该类具有至少一个虚函数时。 拥有虚函数表明一个类是作为一个派生类的接口,如果是派生类的对象可以通过指向基类的指针销毁。 例如: 阅读全文