不能继承的类
来源:互联网 发布:什么叫淘宝旺铺智能版 编辑:程序博客网 时间:2024/05/29 16:42
设计一个不能被继承的类
1.定义公有静态成员函数
#include<iostream>
using namespace std;
class A
{
public:
static A* getA(int x)
{
cout << "A() " << endl;
return new A(x);
//这里用new,而直接调用是因为静态方法只能访问类的静态成员,不能访问类的非静态成员;
//A* pa = (A*)malloc(sizeof(A));
//pa->A::A⑶;
//return pa;
}
static void deleteA(A* p)
{
cout << "A() _a = " << endl;
delete p;
}
void fun()
{
cout << _a << endl;
}
private:
A(int x)
:_a(x)
{
}
~A()
{
}
int _a;
};
class B : public A
{
public:
B()
:_b(1)
{
cout << "B()" << endl;
}
private:
int _b;
};
int main()
{
A* pa = A::getA(10);
//pa->deleteA(pa);
pa->fun();
B bb;
return 0;
}
静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象。调用一个被定义为static的方法,可以通过在它前面加上这个类的名称,也可以像调用非静态方法一样通过类对象调用。
我们在使用时要注意:
静态方法只能访问类的静态成员,不能访问类的非静态成员;
非静态方法可以访问类的静态成员,也可以访问类的非静态成员;
静态方法既可以用实例来调用,也可以用类名来调用。
2.虚继承方法
template<class T>
class Q
{
friend T;
private:
Q()
{}
~Q()
{}
};
class A : virtual public Q<A>
{
public:
A(int x)
:_a(x)
{
cout << "A()" << endl;
}
~A()
{
cout << "~A()" << endl;
}
private:
int _a;
};
class B
{
public:
B()
{
cout << "B()" << endl;
}
~B()
{
cout << "~B()" << endl;
}
};
int main()
{
B bb;
A aa(10);
return 0;
}
阅读全文
0 0
- 不能继承的类
- 不能继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 不能被继承的类
- 一个不能继承的类
- 不能被继承的类
- vue中data定义
- ArcGIS for Android Runtime100 基本操作(七)——三维地图初步使用
- 9、C#里面的关系表达式、逻辑表达式
- python抓取几大票房统计系统数据的之艺恩电影数据
- 生成灰阶测试图
- 不能继承的类
- windows下 webrtc的获得源码和编译
- C/C++ 枚举
- Qt debug模式和release模式的区别
- cocos2d-x3.10 使用tinyxml2在Android配合FileUtilsAndroid解析XML文件
- BZOJ1061 费用流
- Android开发中, 有用的方法、类和接口
- everythingreadme
- 如何利用live555开源库从摄像机抓取视频数据并保存文件?