题目:用c++实现一个不能被继承的类题解分析:常规解法:首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函...
分类:
编程语言 时间:
2014-07-10 00:20:08
阅读次数:
357
这个条款应该和第五个放在一起编译器默认生成1 无参构造函数,2 析构函数3 拷贝构造函数4 赋值预算符当我们不需要,就要显示的告诉大家我们不需要。方法:自己声明这个函数为private,单不要定义它。原因:1 自己声明这个函数,编译器就不会为我们生成这个函数 2 声明成private,就不会被...
分类:
编程语言 时间:
2014-07-07 13:33:21
阅读次数:
232
这似乎很明显。如果base class的destructor不是virtual,当其derived class作为基类使用,析构的时候derived class的数据成员将不会被销毁。举个例子 我们有个交通工具的类作为基类, 它的析构函数不是virtualclass transportTool{ ....
分类:
编程语言 时间:
2014-07-01 10:27:30
阅读次数:
192
看下面的这段代码,问 print调用的是基类还是派生类的版本?
{CSDN:CODE:410156}
答案是 基类。。。
可能大家会很惊讶,print不是virtual function 吗?为什么不是调用派生类的版本呢?
首先,当定义一个派生类的对象的时候,由于 base class 构造函数的执行更早于 derived class
构造函数,所以当 base cl...
分类:
其他好文 时间:
2014-06-30 00:48:35
阅读次数:
267
本例只是对含有本类对象指针的类的构造函数、析构函数、拷贝构造函数、复制运算符使用方法的一个简单示例,以加深对构造函数和拷贝控制成员的理解。
读C++ primer 5th 第13章后加上自己的理解,完整的写了下课后习题的代码。
第一版:
#include
#include
using namespace std;
class TreeNode{
private:
stri...
分类:
编程语言 时间:
2014-06-28 07:13:13
阅读次数:
296
对于结构 1)可以有方法与属性2)是密封的,不能被继承,或继承其他结构3)结构隐式地继承自System.ValueType4)结构有默认的无参数构造函数,可以将每个字段初始化为默认值,但这个默认的构造函数不能被替换,即使重载了带参数的构造函数5)结构没有析构函数6)除了const成员外,结构的字段不...
分类:
其他好文 时间:
2014-06-27 20:47:05
阅读次数:
217
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/fr....
分类:
其他好文 时间:
2014-06-25 15:23:39
阅读次数:
210
编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(v...
分类:
其他好文 时间:
2014-06-22 23:31:22
阅读次数:
212
public member function
std::vector::vector
C++98
C++11
default (1)
explicit vector (const allocator_type& alloc = allocator_type());
fill (2)
explicit vec...
分类:
其他好文 时间:
2014-06-22 07:02:06
阅读次数:
386
在派生的过程中,构造函数和析构函数是不继承的,因此在初始化时,派生类的构造函数就必须完成基类的私有变量初始化。解决问题的思路,在派生类调用基类的构造函数执行派生类构造函数的顺序是:调用基类构造函数,对基类数据成员初始化;调用子对象构造函数,对子对象数据成员初始化;再执行派生类构造函数本身,对派生类数...
分类:
编程语言 时间:
2014-06-21 09:22:42
阅读次数:
252