IT评测·应用市场-qidao123.com
标题:
C++ 继续
[打印本页]
作者:
美食家大橙子
时间:
2025-3-8 08:11
标题:
C++ 继续
继续
继续基本语法
提要点:
class 子类 : 继续方式 父类
//继承语法: class 自己定义的类(子类):继承方式 父类
#include<iostream>
using namespace std;
class Person
{
public:
void body()
{
cout<<"Hello pretty girl"<<"\n";
}
void age1()
{
cout<<"19"<<"\n";
}
};
class Alaso_shuang : public Person
{
public:
void voice()
{
cout<<"interesting to listen"<<"\n";
}
};
void test()
{
Alaso_shuang Alaso;
Alaso.age1();
Alaso.body();
Alaso.voice();
}
int main()
{
test();
return 0;
}
复制代码
继续方式
提要点:
1.继续方式分为:
公共继续(public)
、
掩护继续(protected)
、
私有继续(private)
2.当子类以共有继续 继续父类时,父类全部的对象(除了private)都是可以以共有继续形式访问
2.当子类以 掩护继续 继续父类时,子类全部继续对象均以掩护继续的形式出现,并且表里不能访问
3.当子类以 私有继续 继续父类时,子类全部继续对象均以私有继续的形式出现
#include<iostream>
using namespace std;
class F
{
public:
int a;
protected:
int b;
private:
int c;
};
class F1
{
public:
int a;
protected:
int b;
private:
int c;
};
class F2
{
public:
int a;
protected:
int b;
private:
int c;
};
class son : public F
{
public:
void f()
{
a = 10;//父类中公共权限成员拿到手了
}
protected:
void f1()
{
b = 20;
}
// private:
// void f3()
// {
// c = 1;//报错啦
// }
};
class son1 : protected F1
{
protected:
void f1()
{
a = 10;
b = 40;
//c = 90;//继续报错,说明父类隐私不允许访问
}
};
class son2 : private F2
{
private:
void f5()
{
a = 100;
b = 300;
}
};
void test01()
{
son1 s;
}
int main()
{
test01();
return 0;
}
复制代码
继续中对象模型
提要点:父类中
全部对象均会被子类继续
#include<iostream>
using namespace std;
class f
{
public:
int a;
protected:
int b;
private:
int c;
};
class son1:public f
{
int a;
};
void solve()
{
son1 s;
cout<<"sizeof's value : "<< sizeof(s);
}
int main()
{
solve();
//答案是16,说明父类所有的成员都继承在了子类身上
return 0;
}
复制代码
继续同名成员处理方式
提要点:
1.访问子类同名成员(直接访问即可)
2.访问父类同名成员(需要
加作用域
)
#include<iostream>
using namespace std;
class F
{
public:
F()
{
a = 10000;
}
public:
int a;
};
class son1 : public F
{
public:
son1()
{
a = 2000000;
}
public:
int a;
};
void solve()
{
son1 s;
cout<<s.a<<"\n";
F f;
cout<<f.F::a<<"\n";//父类添加作用域
}
int main()
{
solve();
return 0;
}
复制代码
多继续
提要点:语法:
子类:public 父类1,public 父类2
(不建议利用该格式,会引来麻烦)
#include<iostream>
using namespace std;
class F1
{
public:
F1()
{
m_A = 100000;
}
public:
int m_A;
};
class F2
{
public:
F2()
{
m_B = 200000;
}
public:
int m_B;
};
class children : public F1,public F2//继承两个父类
{
public:
int c_M;
int d_M;
};
void test()
{
children C;
cout<<sizeof(C)<<"\n";
cout<<C.m_A<<"\n";
cout<<C.m_B<<"\n";
//若是父类成员名称相同,就按照继承同名成员方式处理,直接加作用域即可
}
int main()
{
test();
return 0;
}
复制代码
菱形继续
提要点:
1.菱形继续会导致所指对象的属性不明白,还会浪费空间
2.办理菱形继续的办法:
虚继续
,在父类前加一个
virtual
即可
一样寻常我们不会写菱形继续的形式,在此也不做代码解释了哈哈哈哈哈
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4