class Person
{
private:
char _idPerson[20];
char _name[20];
int age;
public:
Person()
{
_idPerson[0]='\0';
_name[0]='\0';
_age=0;
}
};
class Student:public Person
{
private:
char
};
如何使一个类不被继承
class Object
{
int value;
private:
Object(int x=0):value(x){}
};
class Base:public Object
{
int num;
public:
Base(int x):Object(x+10),num(x) {} //无法调用Object的私有设置的构造函数
};
实现一个能被继承的类型,但是不能在外部函数中创建的对象类型
class Object
{
int value;
protected:
Object(int x=0):value(x){}
};
class Base:public Object
{
int num;
public:
Base(int x):Object(x+10),num(x) {} //无法调用Object的私有设置的构造函数
};
int main()
{
Object obj(10); //不可以创建,protected限定函数不能被外部函数访问
}
实现一个不能被继承的类型。但是能在外部函数中创建对象的类型
class Object final //final关键符限定该类不能被继承
{};
继承关系中拷贝构造函数
1.程序设计在基类和派生类中都没有定义拷贝构造函数;c++编译器将自动产生按位拷贝的拷贝构造函数;在派生类的拷贝构造函数的初始化列表中,加入基类拷贝构造函数的调用,是c++编译器合成的代码
2,。程序设计在基类中定义拷贝构造函数;而在派生类中没有定义拷贝构造函数;将会在派生类中自动产生按位拷贝的拷贝构造函数。并合成代码,调用基类的拷贝构造函数。
3.程序设计者在基类和派生类中都定义了拷贝构造函数;程序设计者在派生类中,没有指定调用基类的拷贝构造函数时。c++编译器合成的代码调用基类的缺省构造函数,如果基类中没有缺省构造函数,合成代码失败。