C++ c+中的继承性+; #包括 #包括 #包括 班主任{ private:char name[50]; 智力年龄; public:void get_name(){ cout
如果一个学生想要访问Person字段,最简单的方法是使它们受到保护,这样所有派生类的Person都可以访问它们。C++ c+中的继承性+; #包括 #包括 #包括 班主任{ private:char name[50]; 智力年龄; public:void get_name(){ cout,c++,inheritance,C++,Inheritance,如果一个学生想要访问Person字段,最简单的方法是使它们受到保护,这样所有派生类的Person都可以访问它们。 另一种方法是使用公共getter/setter方法(您甚至可以将它们设置为受保护的,但此时最好使用受保护的字段),这样所有类都可以查看和设置Person的字段。 事实上,即使变量在基类中声明为private,它也存在于派生类中(学生在任何情况下都是个人,因此必须初始化个人字段)但是她无法访问。A是Student类型的对象,它可以访问protected或public类Person的成员
另一种方法是使用公共getter/setter方法(您甚至可以将它们设置为受保护的,但此时最好使用受保护的字段),这样所有类都可以查看和设置Person的字段。
事实上,即使变量在基类中声明为private,它也存在于派生类中(学生在任何情况下都是个人,因此必须初始化个人字段)但是她无法访问。
A
是Student
类型的对象,它可以访问protected
或public
类Person
的成员函数和数据成员。现在回答您的问题,您正在尝试使用classPerson
使用类Student>对象的函数
这是可能的(作为公共继承),并且由于函数和那些私有数据成员属于同一类(Person
),因此这些函数可以使用变量
注意:
private
、public
和protected
成员在同一个类中无效。类student
方法都不能访问person
类私有成员。这样做会导致编译错误。age
和name
都存在于类student
insta但是,您永远不会直接访问它们,只能通过公共get/put方法访问。请记住继承是一种“is a”关系。类student
是一个person
。因此,当您调用person
类中定义的成员函数时,它可以访问自己类的私有成员(因为对象是人
和学生
)为什么你认为私有成员不是继承的?你不能达到的东西和不存在的东西之间有区别。你使用的<代码> IoSturn.H./C>强烈地告诉我你使用的是Turb-C++。你应该知道编译器比旧的多,它是古老的,它不会教你任何关于C++的东西。BH这些特定位(直接继承的访问级别)在过去二十年中没有改变-它们是非常基本的。粗略地说,教Turbo-C++的问题可以分为10%错误,30%现在仍然合法但实践不好,60%缺少现代功能。事实上,访问说明符确实在一个类中有一个函数,但这是相当专业的知识。初学者我们可以忽略这一点。
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class person {
private: char name[50];
int age;
public: void get_name() {
cout<<"Enter name"<<endl;
gets(name);
}
void put_name() {
cout<<"Name : ";
puts(name);
cout<<endl;
}
void get_age() {
cout<<"Enter age"<<endl;
cin>>age;
}
void put_age() {
cout<<"Age : "<<age<<endl;
}
};
class student : public person {
private : int roll;
public : void get_roll() {
cout<<"Enter roll"<<endl;
cin>>roll;
}
void put_roll() {
cout<<"Roll : "<<roll<<endl;
}
};
int main() {
student A;
A.get_name();
A.get_roll();
A.get_age();
A.put_name();
A.put_age();
A.put_roll();
getch();
clrscr();
return 0;
}