变量如何在不创建对象的情况下获得内存
how did the variables get memory without creating the object
#include<iostream>
using namespace std;
class A
{
private:
int a,b;
public:
void setdata(int x,int y){
a=x;b=y;
}
void show_data(){
cout<<a<<b;
}
};
class B: public A{
};
main(){
B b1;
b1.setdata(3,4);
b1.show_data();
}
即使我们不创建类A
的对象,setdata
如何工作(变量如何a
并b
获得内存(?以及如何使用类B
的对象b1
访问A
的私有变量?我很惊讶地看到我的程序正常工作。
即使我们不创建类
A
的对象,setdata
如何工作(变量如何a
并b
获得内存(
但是代码确实创建了一个类A
的对象,就在这里:
B b1;
由于B
是从A
派生的,每个类型为B
的对象都包含一个类型为A
的对象(基类子对象(。
如何使用类
B
的对象b1
访问A
的私有变量
是的,对象是B
类型,但实际执行访问的函数(setdata
(是类A
的成员,因此具有成员对所有类A
的访问权限。
这就是继承应该如何工作: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbclx01/inher.htm
简而言之,您已经创建了一个类型 B 的对象,并且您已经声明了类B
继承自类A
。这意味着B 类型的对象也是 A 类型,只是更具体。就像浮点数是一个数字,而整数也是一个数字一样。狗是动物,猫也是动物。
当您定义时
class B: public A
{
};
这意味着类B
应该继承类A
的所有公共方法。setdata
是一种公共方法,show_data()
相关文章:
- 如何在不等待检索的情况下获取C++中的内存位置?
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- 为什么它在不分配内存的情况下工作正常
- 我是否访问了已释放的内存,或者在这种情况下DrMemory报告不正确?
- 在没有任何锁的情况下加入另一个线程后是否需要内存围栏?
- 传递链表而不在C++内存泄漏的情况下
- 如何在不使用 "new" 关键字的情况下解除分配创建的对象的内存?
- 在这种特殊情况下,我是否需要在共享内存中使用原子类型
- C++ 在不释放内存的情况下调用析构函数
- 在这种情况下,我必须删除内存吗?
- Cython:如何在不需要 GIL 的情况下从 numpy 内存视图转到矢量[对[双,双]]?
- 在不放置新运算符的情况下,在预分配的内存上使用虚函数初始化对象 - 这可能吗?如果没有,为什么
- 变量如何在不创建对象的情况下获得内存
- 如何在没有动态内存分配(堆)的情况下为可变大小数组(矢量)定义安全容器或视图
- 如何在<N>不发生内存泄漏的情况下同时(线程安全)填充 c++11 std::map<std::string,std::bitset*>?
- 我可以在没有任何锁的情况下从不同的线程读取内存缓冲区吗?
- 是否可以在不分配内存或复制数据的情况下构造对象?
- 如何在不导致内存泄漏的情况下将数组分配给结构内的指针
- 在这种情况下,如何释放内存?
- 在这种情况下内存泄漏?反复使用新关键字