简单的C++问题 50
classA{public:inta;Bb;//B也是一个类}请问类B中的成员函数该如何访问A的成员变量a?...
class A
{
public:
int a;
B b; //B也是一个类
}
请问类B中的成员函数该如何访问A的成员变量a? 展开
{
public:
int a;
B b; //B也是一个类
}
请问类B中的成员函数该如何访问A的成员变量a? 展开
6个回答
展开全部
可以将B定义为A类的派生类,下面是我在百度知道上给人写的程序,就以这个为例吧。。。
#include <iostream>
#include <string.h>
using namespace std;
class CPerson
{
protected:
char name[20];
char sex[10];
int number;
public:
CPerson(char *name,char *sex,int number);
virtual void print();
};
class CStudent:public CPerson
{
private:
int score1;
int score2;
int score3;
public:
CStudent(char *name,char *sex,int number,int score1,int score2,int score3);
void print();
};
class CTeacher:public CPerson
{
private:
int age;
public:
CTeacher(char *name,char *sex,int number,int age);
void print();
};
CPerson::CPerson(char *name, char *sex,int number)
{
strcpy(this->name,name);
strcpy(this->sex,sex);
this->number=number;
}
void CPerson::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;
}
CStudent::CStudent(char *name,char *sex,int number,int score1,int score2,int score3):CPerson(name,sex,number)
{
this->score1=score1;
this->score2=score2;
this->score3=score3;
}
void CStudent::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;
cout<<"学生的第一门考试成绩是:"<<score1<<endl;
cout<<"学生的第二门考试成绩是:"<<score2<<endl;
cout<<"学生的第三门考试成绩是:"<<score3<<endl;
cout<<endl;
}
CTeacher::CTeacher(char *name, char *sex, int number, int age):CPerson(name,sex,number)
{
this->age=age;
}
void CTeacher::print()
{
cout<<"教师的姓名是:"<<name<<endl;
cout<<"教师的性别是:"<<sex<<endl;
cout<<"教师的编号是:"<<number<<endl;
cout<<endl;
cout<<"教师的年龄是:"<<age<<endl;
cout<<endl;
}
int main()
{
CStudent stu("张三","男",110,80,90,100);
CTeacher tea("李四","男",119,37);
stu.print();
tea.print();
return 0;
}
这里,CStudent和CTeacher都是CPerson中的类,通过公有继承,调用了CPerson中的构造函数,从而访问到了其中的name,sex和number成员变量。。。
在面向对象中,都可以通过这样的思想实现不同类之间的访问。。。
当然这不是唯一的方法,还可以通过定义友元函数,就是friend。。。;这样的语句访问类中的成员变量等等。。。
你自己可以找些题目来编一下就没问题了^_^
#include <iostream>
#include <string.h>
using namespace std;
class CPerson
{
protected:
char name[20];
char sex[10];
int number;
public:
CPerson(char *name,char *sex,int number);
virtual void print();
};
class CStudent:public CPerson
{
private:
int score1;
int score2;
int score3;
public:
CStudent(char *name,char *sex,int number,int score1,int score2,int score3);
void print();
};
class CTeacher:public CPerson
{
private:
int age;
public:
CTeacher(char *name,char *sex,int number,int age);
void print();
};
CPerson::CPerson(char *name, char *sex,int number)
{
strcpy(this->name,name);
strcpy(this->sex,sex);
this->number=number;
}
void CPerson::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;
}
CStudent::CStudent(char *name,char *sex,int number,int score1,int score2,int score3):CPerson(name,sex,number)
{
this->score1=score1;
this->score2=score2;
this->score3=score3;
}
void CStudent::print()
{
cout<<"学生的姓名是:"<<name<<endl;
cout<<"学生的性别是:"<<sex<<endl;
cout<<"学生的编号是:"<<number<<endl;
cout<<endl;
cout<<"学生的第一门考试成绩是:"<<score1<<endl;
cout<<"学生的第二门考试成绩是:"<<score2<<endl;
cout<<"学生的第三门考试成绩是:"<<score3<<endl;
cout<<endl;
}
CTeacher::CTeacher(char *name, char *sex, int number, int age):CPerson(name,sex,number)
{
this->age=age;
}
void CTeacher::print()
{
cout<<"教师的姓名是:"<<name<<endl;
cout<<"教师的性别是:"<<sex<<endl;
cout<<"教师的编号是:"<<number<<endl;
cout<<endl;
cout<<"教师的年龄是:"<<age<<endl;
cout<<endl;
}
int main()
{
CStudent stu("张三","男",110,80,90,100);
CTeacher tea("李四","男",119,37);
stu.print();
tea.print();
return 0;
}
这里,CStudent和CTeacher都是CPerson中的类,通过公有继承,调用了CPerson中的构造函数,从而访问到了其中的name,sex和number成员变量。。。
在面向对象中,都可以通过这样的思想实现不同类之间的访问。。。
当然这不是唯一的方法,还可以通过定义友元函数,就是friend。。。;这样的语句访问类中的成员变量等等。。。
你自己可以找些题目来编一下就没问题了^_^
展开全部
定义一个A的对象,直接就可以访问a了,因为a是public属性。
如果a是static的话就可以用A::a来访问
如果a是static的话就可以用A::a来访问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B中的成员函数要访问A的成员变量a,必须要先实例化一个类A的对象:
int B:: Function(A aObj)
{
return aObj.a;
}
int B:: Function(A aObj)
{
return aObj.a;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为类B与类A没有什么联系,要访问类A的成员变量,要么建立继承关系,要么就是通过A的成员函式间接访问。(我想了半天都没有想明白,像这种模糊的关系很令人头痛,一般做项目不会这么用的。仅是个人意见。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class A
{
public:
int a;
friend B ;
}
{
public:
int a;
friend B ;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在A的定义的前先定义类B,然后在类A的定义中就可以作为嵌入对象嵌入类型为B的对象b了。类B中的成员函数就可以访问类A中的成员数据了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询