1.
#include <iostream>
#include<string>
using namespace std;
class Student
{
public :
Student(int n,string nam){
num=n;
name=name;
}
Student(){}
void display()
{
cout<<"num:"<<num<<endl<<"name:"<<endl;
}
~Student(){}
protected :
int num;
string name;
};
class Student1:public Student
{
public :
Student1(int n,string nam,int n1,string nam1,int a,string ad) : Student(n,nam),monitor(n1,nam1)
{
age=a;
addr=ad;
}
void display1();
void show_monitor()
{
cout<<"the monitor is"<<endl;
monitor.display();
}
private :
Student moniter;
int age;
string addr;
};
void Student1 :: display1()
{
cout<<"the student is:"<<endl;
cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"address:"<<addr<<endl;
}
int main()
{
Student1 stud1(10010,"Wang-li",10001,"Li-sun",19,"115 Beijing Road,Shanghai");
stud1.display1(); //输出学生的数据
stud1.show_monitor(); //输出子对象的数据
return 0;
}
上面代码总是报错:
--------------------Configuration: 51 - Win32 Debug--------------------
Compiling...
3.cpp
D:\Program Files\Microsoft Visual Studio\MyProjects\51\3.cpp(26) : error C2614: 'Student1' : illegal member initialization: 'monitor' is not a base or member
D:\Program Files\Microsoft Visual Studio\MyProjects\51\3.cpp(34) : error C2065: 'monitor' : undeclared identifier
D:\Program Files\Microsoft Visual Studio\MyProjects\51\3.cpp(34) : error C2228: left of '.display' must have class/struct/union type
执行 cl.exe 时出错.
3.obj - 1 error(s), 0 warning(s)
解决之道:
2.基类的构造函数为什么不能被继承?构造函数的访问属性是怎样规定的?