c++ 不能被继承的类怎么写

 我来答
mutanglian
推荐于2016-07-28 · 超过14用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:28.4万
展开全部
题目:用C++ 设计一个不能被继承的类。
分析:这是Adobe 公司2007 年校园招聘的最新笔试题。这道题除了考察应聘者的C++ 基本功底外,还能考察反应能力,是一道很好的题目。
在Java 中定义了关键字final ,被final 修饰的类不能被继承。但在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。
首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xkyx_cn/archive/2008/04/02/2245038.aspx

参考资料: http://blog.csdn.net/xkyx_cn/archive/2008/04/02/2245038.aspx

郭某人来此
2015-10-03 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:89.2万
展开全部
代码:
#include<iostream>
using namespace std;
class SealedClass
{
private: // 私有成员
SealedClass() { }; // 构造函数
~SealedClass() { }; // 析构函数
public:
int m_number;
static SealedClass* GetInstance(int number) // 用于构造的函数
{
SealedClass * pInstance = new SealedClass();
pInstance->m_number = number;
return pInstance;
}
static void DeleteInstance(SealedClass* pInstance) // 用于析构的函数
{
delete pInstance;
pInstance = 0;
}
};
int main(void)
{
SealedClass * p = SealedClass::GetInstance(9);
cout<<"m_number is : "<<p->m_number<<endl;
SealedClass::DeleteInstance(p);
cout<<"m_number is : "<<p->m_number<<endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李英珏
2011-04-09 · TA获得超过193个赞
知道小有建树答主
回答量:371
采纳率:100%
帮助的人:189万
展开全部
定义为高级类 加上final关键词
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
割头红小鬼
2011-04-09 · TA获得超过632个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:285万
展开全部
C++类继承 构造函数 定义和实现的写法

//C.h
class C
{
public:
C();//构造函数定义
~C();//析构函数定义
};

//C.cpp
#indlude "C.h"
C::C(){...}//构造函数实现
C::~C(){...}//析构函数实现

//D.h
class D:classC//D继承C
{
...
};

以上是一个框架
以下是一个实例 为节省空间 定义和实现写到一起了

//TreeBaseNode.h
#pragma once
#include <iostream>
using namespace std;
class CTreeBaseNode
{
public:
CTreeBaseNode(int t)
{
m_Type = t;
m_L = 0;
m_R = 0;
m_P = 0;
}
virtual ~CTreeBaseNode()
{
m_L = 0;
m_R = 0;
m_P = 0;
}

virtual void Show() = 0;

int m_Type;

CTreeBaseNode* m_L;
CTreeBaseNode* m_R;
CTreeBaseNode* m_P;
};
//TreeNodeA.h
#pragma once
#include "treebasenode.h"

class CTreeNodeA :
public CTreeBaseNode
{
public:
CTreeNodeA(int v):CTreeBaseNode(0)
{
m_Value = v;
}
virtual ~CTreeNodeA(void){}

virtual void Show()
{
cout<<m_Value<<endl;
}

int m_Value;
};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滨崎步最爱
2011-04-09 · TA获得超过665个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:457万
展开全部
c++中有关键字final?好像是java的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式