#include <iostream>
#include <string>
using namespace std;
class Advisor
{
int nootmeeting;
public:
Advisor(){ cout << “Advisor1 \n”; };
//Advisor(){ cout << “copy Advisor2 \n”; };
~Advisor(){ cout << “~Advisor;\n”;}
private:
};
class student
{
string name;
int semeterHours;
double averge;
public:
student(string pnname = “no name”) :name(pnname), semeterHours(0), averge(0){};
int getHours(){ return semeterHours; }
double aaverge(){ return averge; }
void display(){ cout << “name: “<<name<< ” hours: ” << semeterHours << ” averge = ” << averge<<“\n”; }
~student(){ cout << “~student \n”; };
private:
};
class GraStudent:public student
{
Advisor advisor;
int grade;
public:
GraStudent(const string& PN, Advisor& pp) :student(PN), advisor(pp), grade(0){}; //这里使用应用与不使用有什么区别?
~GraStudent(){ cout << “~GraStudent \n”; }
void display()
{
student::display();
cout << ” Advisor: ” << grade << “\n”;
}
};
void f(Advisor& dd)
{
GraStudent rs(“deng”, dd);
rs.display();
rs.student::display();
}
int main()
{
Advisor ss;
f(ss);
}
#include <string>
using namespace std;
class Advisor
{
int nootmeeting;
public:
Advisor(){ cout << “Advisor1 \n”; };
//Advisor(){ cout << “copy Advisor2 \n”; };
~Advisor(){ cout << “~Advisor;\n”;}
private:
};
class student
{
string name;
int semeterHours;
double averge;
public:
student(string pnname = “no name”) :name(pnname), semeterHours(0), averge(0){};
int getHours(){ return semeterHours; }
double aaverge(){ return averge; }
void display(){ cout << “name: “<<name<< ” hours: ” << semeterHours << ” averge = ” << averge<<“\n”; }
~student(){ cout << “~student \n”; };
private:
};
class GraStudent:public student
{
Advisor advisor;
int grade;
public:
GraStudent(const string& PN, Advisor& pp) :student(PN), advisor(pp), grade(0){}; //这里使用应用与不使用有什么区别?
~GraStudent(){ cout << “~GraStudent \n”; }
void display()
{
student::display();
cout << ” Advisor: ” << grade << “\n”;
}
};
void f(Advisor& dd)
{
GraStudent rs(“deng”, dd);
rs.display();
rs.student::display();
}
int main()
{
Advisor ss;
f(ss);
}
解决方案
20
引用赋值和一般变量赋值的区别有两点:
1、引用赋值实际上是一个变量地址的传递,而变量赋值是一个新变量构造、值拷贝的过程;
2、引用赋值的两个变量其实指的是同一个数据,而变量赋值后的两个变量互不相干。
在函数参数传递中,对于对象,通常用引用传递,原因就是上面的第一点,它不会多出一个对象构造和对象复制的过程,可以提高效率。
1、引用赋值实际上是一个变量地址的传递,而变量赋值是一个新变量构造、值拷贝的过程;
2、引用赋值的两个变量其实指的是同一个数据,而变量赋值后的两个变量互不相干。
在函数参数传递中,对于对象,通常用引用传递,原因就是上面的第一点,它不会多出一个对象构造和对象复制的过程,可以提高效率。
20
10
一句话回答你的问题
效率问题
效率问题