C++中关于派生类构造函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 10:22:59
#include <iostream>
using namespace std;

class A
{ public: A(int a) //构造函数
{this->a=a;} //析构函数
~A(){};

void show_A(){cout < <a;}

private: int a;
};

class B :public A
{ public: B(int a,int b):A(a) //构造函数
{this->b=b;}
~B(){}; //析构函数

void show_B()
{
show_A(); //调用从A继承过来的函数 访问基类的私有成员数据a
cout < <b;
}

private: int b;
};

int main()
{ B t1(1,2);
t1.show_B();
return 0;
}

2个问题:

1. 为什么B类可以调用A的构造函数?? 构造函数和析构函数是不能被继承的 主函数中没有建立A的对象 那么B对象t1(1,2)中1的值传递给谁, 1对A这个类有什么意义咧??

2. 为什么B对象能为A的私有成员变量赋值 建立一个对象就能篡改A类的数据 这不是破坏了A的封装吗?

C++到底有没有封装特性吖!!

派生类对象生成时,调用构造public: B(int a,int b):A(a) ,其中就已经调用了基类构造函数,并且将形参int a 赋给了 A(a).

私有成员变量不能被派生类直接调用,但是可以通过public函数来访问的,这是封装的规则之一