问1:子类继承了父类的所有成员,对吗?答1:错,子类没有继承父类的构造函数,析构函数,operator=和友元函数。问2:父类指针指向子类对象,通过该指针能够调用子类特有(父类没有)的函数吗?答2:不能,见下例。#include
using namespace std;class A{};class...
分类:
其他好文 时间:
2014-06-11 07:18:16
阅读次数:
193
不要在类的构造或者析构函数中调用虚函数,因为这种调用不会如你所愿,即使成功一点,最后还会使你沮丧不已。如果你以前是一个Java或者C#程序员,请密切注意本节的内容-这正是C++与其它语言的大区别之一。
假设你有一个为股票交易建模的类层次结构,例如买单,卖单,等等。为该类交易建立审计系统是非常重要的....
分类:
其他好文 时间:
2014-06-10 12:49:19
阅读次数:
154
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用...
分类:
编程语言 时间:
2014-06-09 16:52:03
阅读次数:
331
因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册。没有什么顺序,很杂。1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同。),但是析构函数只能有一个。当没有在代码中写明构造或析构函数时,编译器会自动生成缺省的构造或析构函数。...
分类:
编程语言 时间:
2014-06-08 20:27:27
阅读次数:
372
newdelete与new[]delete[]必须配对使用
//注意,由于内置数据类型没有构造、析构函数,所以针对内置数据类型时,释放和内存使用delete或delete[]的效果是一样的。
例如:
int *pArray = new int[10];
...//processing code
delete pArray; //等同于delete[] pArray;
虽然针对...
分类:
其他好文 时间:
2014-06-08 08:33:53
阅读次数:
209
当为一个类实现自己的构造函数,相关赋值函数,析构函数,则必须有责任对类中的每一个成员进行初始化、赋值、释放。因此:如果为一个类添加一个成员,就必须同时相应修改上面几类函数。...
分类:
其他好文 时间:
2014-06-04 22:37:12
阅读次数:
262
1class ITest 2{ 3public: 4virtual void Test() = 0;
5 6}; 7 8class CTest : public ITest 9{ 10 public: 11CTest(){
printf("constructor.n"); }; 12~CTest()...
分类:
其他好文 时间:
2014-06-03 11:38:25
阅读次数:
314
1、new 是c++中的操作符,malloc是c 中的一个函数2、new
不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于...
分类:
其他好文 时间:
2014-05-28 00:09:15
阅读次数:
318
经验1:
析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。
经验2:
如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。...
分类:
编程语言 时间:
2014-05-25 16:20:26
阅读次数:
304
经验:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)。
让derived class将必要的构造信息向上传递至baseclass构造函数...
分类:
编程语言 时间:
2014-05-25 09:52:25
阅读次数:
237