*CPerson::getName()和CPerson::*getName()
时间: 2024-05-30 14:13:51 浏览: 149
这两者有什么区别?
第一个是类的成员函数,作用于某个具体的类,例如CPerson类,用法为:person.getName()。第二个是类的成员函数指针,可以作为函数参数或返回值,必须通过对象指针或对象引用调用,例如person.*getName()。使用时应注意函数指针指向的成员函数不能是虚函数。
相关问题
CPerson::*getName()和*CPerson::getName()
这两个函数的区别是什么?
这两个函数的区别在于返回值的类型不同。CPerson::*getName()是一个成员函数指针,它返回的是一个指向类成员函数的指针。而*CPerson::getName()是一个函数调用操作符,它返回的是类成员函数的返回值。具体而言,前者用于获取类成员函数的地址,后者用于调用类成员函数并返回其返回值。
#include <iostream> using namespace std; class Date { public: int year,month,day; Date(int year=2000,int month=1,int day=1):year(year),month(month),day(day) {} }; class Cperson { private: string Name; string Num; Date brith; Cperson(const char *pName="张三", string Num="123456789123456789", int year=2000,int month=1,int day=1): Name(Name),Num(Num),brith(year,month,day) {} string GetName() { return Name; } string GetNum() { return Num; } int Getbrith() { return brith; } }; cass Cstudent: private Cperson { private: int StNum; }; class Cteacher:public Cperson { private: Date Time; }; int main() { cout << "手机编程APP"; return 0; }有什么错误
在类Cperson的构造函数中,初始化成员变量时,应该使用初始化列表中的参数,而不是使用类内部定义的变量。正确的构造函数应该是:
```
Cperson(const char *pName="张三",
string Num="123456789123456789",
int year=2000,int month=1,int day=1):
Name(pName),Num(Num),brith(year,month,day)
{}
```
此外,在类Cperson的成员函数Getbrith中,返回值应该是一个Date对象,而不是int类型。应该改为:
```
Date Getbrith()
{
return brith;
}
```
最后,在类Cstudent和Cteacher中,应该声明访问权限为public,否则外部无法访问这些类的成员。修正后的代码如下:
```
#include <iostream>
using namespace std;
class Date {
public:
int year,month,day;
Date(int year=2000,int month=1,int day=1):year(year),month(month),day(day)
{}
};
class Cperson {
public:
string Name;
string Num;
Date brith;
Cperson(const char *pName="张三",
string Num="123456789123456789",
int year=2000,int month=1,int day=1):
Name(pName),Num(Num),brith(year,month,day)
{}
string GetName()
{
return Name;
}
string GetNum()
{
return Num;
}
Date Getbrith()
{
return brith;
}
};
class Cstudent: public Cperson {
public:
int StNum;
};
class Cteacher:public Cperson {
private:
Date Time;
public:
// 省略构造函数
};
int main() {
cout << "手机编程APP";
return 0;
}
```
阅读全文