问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++:访问权限protected的问题

发布网友 发布时间:2022-04-23 03:18

我来回答

4个回答

热心网友 时间:2023-08-17 05:42

#include <iostream>
using namespace std;
class Shape{
protected:
virtual double getArea() =0;
virtual double getCircumference()=0;

virtual void print(){
cout<<"Circumference = "<<getArea()<<"\n";
cout<<"Area = " <<getCircumference()<<"\n\n";
}
};

class Circle:public Shape {
public:
Circle(double radius = 0){
this->radius = radius;
}
double getArea(){
return Pi* radius* radius;
}
double getCircumference(){
return 2*Pi* radius;
}
private:
//const static double Pi =3.14;const static类型的变量,只有int能这么写,其他类型必须在类外初始化
double radius ;

};
const double Circle :: Pi = 3.14;

class Triangle:public Shape{
public:
Triangle(double width ,double height){
this->width = width;
this->height=height;
}
double getArea(){
return width * height;
}
double getCircumference(){
return 2*width + 2*height;
}
private:
double width , height;
};

int main(int argc, char *argv[])
{
cout << "Let's create a Circle .\nEnter a radius: ";
double Radius = 0;
cin >> Radius;
Circle MyCircle(Radius);
MyCircle.print();

cout << "Let's create a Triangle .\nEnter the width and height : ";
double width ,height;
cin >> width >>height;
Triangle MyTriangle(width ,height);
MyTriangle.print();
return 0;
}

在说说protect继承的问题,在主函数定义的Circle对象,cirle是从shape共有继承下来的,所有对于circle来说,print函数是保护类型的,当然他的对象是访问不了自己的保护成员的。

protected允许其子类来访问,这句话的意思是在类定义内,子类可以访问访问父类的protect
例如:
#include <iostream>
using namespace std;
class Shape{
protected:
virtual double getArea() =0;
virtual double getCircumference()=0;
virtual void print(){
cout<<"Circumference = "<<getArea()<<"\n";
cout<<"Area = " <<getCircumference()<<"\n\n";
}
};
class Circle:public Shape {
public:
Circle(double radius = 0) : radius(radius)
{
}
double getArea(){
return Pi* radius* radius;
}
double getCircumference(){
return 2*Pi* radius;
}
void print()
{
Shape::print();
}
private:
const static double Pi ;
double radius ;
};
const double Circle :: Pi = 3.14;
class Triangle:public Shape{
public:
Triangle(double width ,double height){
this->width = width;
this->height=height;
}
double getArea(){
return width * height;
}
double getCircumference(){
return 2*width + 2*height;
}
void print()
{
Shape::print();
}
private:
double width , height;
};
int main(int argc, char *argv[])
{
cout << "Let's create a Circle .\nEnter a radius: ";
double Radius = 0;
cin >> Radius;
Circle MyCircle(Radius);
MyCircle.print();
cout << "Let's create a Triangle .\nEnter the width and height : ";
double width ,height;
cin >> width >>height;
Triangle MyTriangle(width ,height);
MyTriangle.print();
return 0;
}

热心网友 时间:2023-08-17 05:42

const static double Pi =3.14; 只有静态常量整型数据成员才可以在类中初始化
你是public继承的,protected是不能被公有继承的。还有你就是没事找事,方法也加了protected,你方法不公有干什么,保护变量就好了。protected允许其子类来访问的也不是你这样的,是这样的,给出代码:
#include <iostream>
#include <string>
using namespace std;
class Lyhvehicle
{
protected:
string name;
string colour;
public:
Lyhvehicle(){}
Lyhvehicle(string a,string b)
{
name=a;
colour=b;
}
virtual void show()
{
cout<<"车的种类 "<<name<<endl;
cout<<"车的颜色 "<<colour<<endl;
}
virtual string Getwheel()
{
return name;
}
virtual string Getweight()
{
return colour;
}
};
class Lyhcar:public Lyhvehicle
{
int num;
public:
Lyhcar(string a,string b,int c):Lyhvehicle(a,b) //是这样访问父类的私有或保护对象的
{
num=c;
}
void show()
{
cout<<"轿车的种类 "<<Getwheel()<<endl;
cout<<"轿车的颜色 "<<Getweight()<<endl;
cout<<"轿车的载人数 "<<num<<endl;
}
};
class Lyhtruck:private Lyhvehicle
{
double zweight;
public:
Lyhtruck(double b,string c,string d):Lyhvehicle(c,d)
{
zweight=b;
}
void show()
{
cout<<"卡车的种类 "<<Getwheel()<<endl;
cout<<"卡车的颜色 "<<Getweight()<<endl;
cout<<"卡车的载重量 "<<zweight<<endl;
}
};
void main()
{
Lyhvehicle a("车","蓝色");
Lyhcar b("汽车","红色",4);
Lyhtruck c(2.1,"卡车","紫色");
a.show();
b.show();
c.show();
}

热心网友 时间:2023-08-17 05:43

代码如下:
#include <iostream>
using namespace std;
class Shape{
public:
void fun(){print();}
protected:
virtual double getArea() =0;
virtual double getCircumference()=0;
virtual void print()
{
cout<<"Circumference = "<<getArea()<<"\n";
cout<<"Area = " <<getCircumference()<<"\n\n";
}
};
class Circle:public Shape {
public:
Circle(double radius = 0){
this->radius = radius;
}
double getArea(){
return Pi* radius* radius;
}
double getCircumference(){
return 2*Pi* radius;
}
private:
const static double Pi;
double radius ;
};
const double Circle::Pi=3.14;
class Triangle:public Shape{
public:
Triangle(double width ,double height){
this->width = width;
this->height=height;
}
double getArea(){
return width * height;
}
double getCircumference(){
return 2*width + 2*height;
}
private:
double width , height;
};
int main(int argc, char *argv[])
{
cout << "Let's create a Circle .\nEnter a radius: ";
double Radius = 0;
cin >> Radius;
Circle MyCircle(Radius);
MyCircle.fun();

cout << "Let's create a Triangle .\nEnter the width and height : ";
double width ,height;
cin >> width >>height;
Triangle MyTriangle(width ,height);
MyTriangle.fun();
return 0;
}

热心网友 时间:2023-08-17 05:43

在shape的基类print函数前加一个public:
你的print是protected,子类中是无法调用的,在子类里是private的
另外
const static double Pi =3.14;我的编译器报错,把他调到类外面去,或者改成其他的形式
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 java protected访问权限问题 private、public、protected访问权限最大的是? java中的四种访问权限是? public/private/protected的具体区别 求助Java中的访问权限关键字protected的用法和含义?谢 java为什么不能用protected修饰类, protected和private区别 java 的class 为什么不可以是protected访问权限 访问权限为protected的类成员可被访问的范围是什么? public ,protected, private这三种权限限定关键字的限定的内容访问范围是什么 private、protected、pubic、internal修饰符的访问权限分别是? java中protected权限问题? 简述private、 protected、 public、 internal 修饰符的访问权限。 微信公众号自定义菜单怎么设置? 怎么在微信公众平台设置自定义菜单 微信个人订阅号如何自定义菜单申请怎么弄? 微信自定义菜单有哪些好处 微信里面那个自定义菜单怎么弄呢? 微信自定义菜单都有哪些功能? 微信中的自定义菜单主要是什么作用? 用Protected修饰的成员变量和方法具有什么样的访问权限制 protected 是怎么回事 public private protected 的区别 VC++中的public,private,protected的区别,说得通俗点 java中private和protected的区别 凤凰金融怎么样呢,选这个平台的人多吗? 凤凰金融怎么样,可以投钱吗? 凤凰金融理财怎么样,可靠吗? 凤凰金融怎么样,安全不安全? 凤凰金融的实力怎么样?? 说说凤凰金融怎么样吧? 凤凰金融怎么样?投资风险大吗? 凤凰金融怎么样?有了解的吗? 想让孩子学英语帮忙推荐一下福州有哪些比较好的英语培训机构 选择凤凰金融怎么样? 大家觉得凤凰金融怎么样? 福州什么地方的英语培训班比较好? 大家认为凤凰金融怎么样?进行投资靠谱吗? 福州哪里有英语培训班?急求! 一直在寻找投资的平台,凤凰金融怎么样呢?