标题:C++多态性基本概念 包括虚函数和纯虚函数
只看楼主
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
以下是引用beyondyf在2012-2-23 21:14:40的发言:

嗯。我也同意只是复制资料意义不大。但如果配合了你的问题,那就不同了,这将成为一个不错的讨论贴。

不妨问问



那就简单的来一题:

设计一个类,使之不能被继承。
2012-02-24 20:54
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:0 
程序代码:
#include <iostream>

using namespace std;

class A
{
private:
    A(int x,int y)
    {
       
    }
    

};
class B:public A
{
   
};
int main()
{
    cout << "Hello world!" << endl;
    B c;
    return 0;
}
这样可以吧。。。

用心做一件事情就这么简单
2012-02-24 21:54
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
以下是引用小鱼儿c在2012-2-24 21:54:43的发言:

#include <iostream>

using namespace std;

class A
{
private:
    A(int x,int y)
    {
      
    }
   

};
class B:public A
{
   
};
int main()
{
    cout << "Hello world!" << endl;
    B c;
    return 0;
}
这样可以吧。。。



你似乎没理解我的意思,你这么定义A是不能被继承了。可是A自己也不能对象化了。

我要的是能实现一个类,自己可以对象化,但是不能被继承。
2012-02-24 22:35
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:0 
程序代码:
#include <iostream>

using namespace std;

class A
{
    public:
    A(int ,int )
    {
        cout <<"construct"<<endl;
    }
private:
    A()
    {
       
    }
    

};
class B:public A
{
   
};
int main()
{
    cout << "Hello world!" << endl;
    A d(0,0);
    B c;
    return 0;
}


这样呢,,,  A 可以实例化,。。

用心做一件事情就这么简单
2012-02-24 23:49
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
以下是引用小鱼儿c在2012-2-24 23:49:12的发言:

#include <iostream>

using namespace std;

class A
{
    public:
    A(int ,int )
    {
        cout <<"construct"<<endl;
    }
private:
    A()
    {
      
    }
   

};
class B:public A
{
   
};
int main()
{
    cout << "Hello world!" << endl;
    A d(0,0);
    B c;
    return 0;
}

这样呢,,,  A 可以实例化,。。

你认为哪个类不能被继承?
2012-02-25 00:37
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:0 
哦,搞过了。。

用心做一件事情就这么简单
2012-02-25 00:45
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:0 
程序代码:
#include <iostream>

using namespace std;

class A
{
    
private:
    static void f()
    {
        A();
    }
    A()
    {
        
    }

};
class B//:public A
{
public:
    B()
    {
        cout<<"B constrcut"<<endl;
    }
};
int main()
{
    cout << "Hello world!" << endl;
    //A d(0,0);
    A a;
    //B c;
    return 0;
}

用心做一件事情就这么简单
2012-02-25 01:10
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:0 



错了。。。

[ 本帖最后由 小鱼儿c 于 2012-2-25 21:29 编辑 ]

用心做一件事情就这么简单
2012-02-25 01:19
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
讲了一堆废话。

你上面那堆代码啥也没实现。
2012-02-25 01:29
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
C#里有关键字sealed,java里有关键字final,都是办这事。C++下就略复杂了,网上资料很多我就不重复了。就我所学过的语言里,C++的驾驭难度是最高的(呵呵,已经很久不用了)。

重剑无锋,大巧不工
2012-02-25 08:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361400-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.991282 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved