网友您好, 请在下方输入框内输入要搜索的题目:
题目内容
(请给出正确答案)
在C++代码中,将struct直接改成class,你可能面对哪些风险?又该如何修正?(参考12.2)
A.可能使得外部程序无法访问这个结构体(现在是类)的成员,因为默认访问性从公有变为私有
B.这一步是不可能通过少量代码修改完成的,因为struct和class完全不兼容
C.可能原有程序中的初始化失败,这很可能也是由于默认访问性的改变导致的
D.由于C++结构体不允许存在函数,所以不会发生成员函数因访问性的改变而不能被调用的情况。(参考12.1)
E.你可以直接用一个public关键字将class所有的成员重置为可访问的,而且可以解决大部分的问题,虽然这么做不太符合工程规范
F.如果原来的struct已经使用public或private对访问性进行了无遗漏的设定,那么很可能你无须做任何额外的工作程序编译就能顺利通过。
参考答案和解析
ACEF
更多 “在C++代码中,将struct直接改成class,你可能面对哪些风险?又该如何修正?(参考12.2)A.可能使得外部程序无法访问这个结构体(现在是类)的成员,因为默认访问性从公有变为私有B.这一步是不可能通过少量代码修改完成的,因为struct和class完全不兼容C.可能原有程序中的初始化失败,这很可能也是由于默认访问性的改变导致的D.由于C++结构体不允许存在函数,所以不会发生成员函数因访问性的改变而不能被调用的情况。(参考12.1)E.你可以直接用一个public关键字将class所有的成员重置为可访问的,而且可以解决大部分的问题,虽然这么做不太符合工程规范F.如果原来的struct已经使用public或private对访问性进行了无遗漏的设定,那么很可能你无须做任何额外的工作程序编译就能顺利通过。” 相关考题
考题
阅读以下说明和C++代码,填入(n)处。[说明]以下C++代码使用虚函数实现了同一基类shape派生出来的Class rectangle、Class triangle、Class circle实现了计算矩形、圆形面积的计算。仔细阅读以下代码,将(n)处语句补充完整。[代码5-1]include<iostream.h>define PI 3.14159class shape {//基类protected:(1);public:(2);(3);};[代码5-2]class rectangle: public shape {public:rectangle (int x2,int y2,int r2): (4) {};double area ( ) {return x*y; };};class circle: public shape {public:circle (int x3,int y3,int r3):(5){};double area ( ) {return r*r*PI; };};[代码5-3]void main ( ){rectangle r (10,20,0);circle c (0,0,30);shape (6);cout<<"长方形面积="<<s1->area ( ) <<endl;cout<<"圆形面积="<<s2->area ( ) <<endl;}[运行结果]长方形面积=200圆形面积=2827.43
考题
给出下列代码,如何使成员变量m被方法fun( )直接访问?Class Test{private int m;public static void fun( ){} }A.将private int m改为protected int mB.将private int m改为public int mC.将private int m改为static int mD.将private int m改为int m
考题
在C++语言中,关于类(class)和结构体(struct)的说法中,正确的是______。A.结构体不允许有成员函数B.结构体与类没什么区别,可以替换C.类定义中成员在默认情况下是privateD.类定义中成员在默认情况下是publicA.B.C.D.
考题
a)Can a struct inherit from another struct?(结构体能继承结构体吗)b)Can a struct inherit from another class?(结构体能继承类吗)c)Can a struct be the base of another class?(结构体可以作为一个类的基类吗)d)Can a struct implement an interface?(结构体可以实现一个接口吗)e)What’s the difference between struct and class?(结构体与类有什么区别)
考题
阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 以下C++代码实现一个简单的聊天室系统(ChatRoomSystem),多个用户(User)可以向聊天室(ChatRoom)发送消息,聊天室将消息展示给所有用户。类图如图6-1所表示。图6-1 类图【C++代码】 includeiostream include string using namespace std; class User { private: string name; public: User(string name){ (1) =name; } ~User(){} void setName(string name) { this-name=name; } string getName(){ return name; } void sendMessage(string message); }; class ChatRoom { . public: static void showMessage(User* user, string message) { cout[user-getName()] : messageendl; } }; void User::sendMessage(string message) { (2) (this,message); } class ChatRoomSystem{ public: . . void startup() { User* zhang = new User(John); User* li = new User(Leo); zhang-sendMessage(Hi! Leo!); li_sendMessage(Hi! John!); } void join(User* user) { (3) (HeIIo Everyone! l am+user-getName()); } . }; int main(){ ChatRoomSystem*crs= (4) ; crs-startup(); crs-join( (5) (Wayne)); delete crs; } /* 程序运行结果: [John]:Hi! Leo! [Leo]:Hi! John! [Wayne]:Hello Everyone! I am Wayne /*
考题
阅读以下说明和C++程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDec- orator与FootDecorator分别能够完成打印票据的台头和脚注的功能。已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。这是票据的台头!这是票据正文!这是票据的脚注!---------------这是票据的台头!这是票据的脚注!【C++程序代码】#includeusing namespace std;class SalesTicket {public:(1) printTicket() { cout " 是票据正文!" endl;}class Decorator : public SalesTicket{SalesTicket *ticket;public:Decorator(SalesTicket *t){ ticket = t; }void printTicket(){if(ticket != NULL)ticket->printTicket();}};class HeadDecorator : public Decorator{public:HeadDecorator(SalesTicket *t): (2) { }void printTicket() {sour "这是票据的台头!" endl;Decorator::printTicket();}};class FootDecorator :public Decorator{public:FootDecorator(SalesTicket *t): (3)void printTicket() {Decorator::printTicket();cout "这是票据的脚注!" endl;}};void main(void) {SalesTicket t;FootDecorator f(t);HeadDecorator h( (4) );h.printTicket();cout "-------------------------" endl;FootDecorator a(NULL);HeadDecorator b( (5) );b.printTicket();}
考题
试题六(共 15 分)阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下 C++代码实现一个简单的聊天室系统(ChatRoomSystem),多个用户 (User)可以向聊天室(ChatRoom)发送消息,聊天室将消息展示给所有用户。 类图如图 6-1 所表示。
【C++代码】#include#include using namespace std; class User {private:string name; public:User(string name){ (1) =name;}~User(){}
void setName(string name) {this->name=name; } string getName(){return name;}void sendMessage(string message); }; class ChatRoom { . public:static void showMessage(User* user, string message) { coutgetName()"] : " zhang->sendMessage("Hi! Leo!");li_>sendMessage("Hi! John!"); }void join(User* user) { (3) ("HeIIoEveryone!l am"+user->getName()); . ;} . };int main(){ChatRoomSystem*crs= (4) ; crs->startup();crs->join( (5) ("Wayne")); delete crs; }/* 程序运行结果: [John]:Hi! Leol [Leo]:Hi! John![Wayne】:Hello Everyone!Iam Wayne/*
考题
试题六(共 15 分)阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下 C++代码实现一个简单客户关系管理系统(CrM)中通过工厂(Customerfactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(realCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取的对象。类间关系如图6-1 所示。
【C++代码】#include#includeusing namespace std; class Customer{protected:string name;public:(1) boll isNil()=0;(2) string getName()=0;﹜; class realCustomer (3){public:realCustomer(string name){this->name=name;﹜bool isNil(){ return false;﹜string getName(){ return name;﹜﹜; class NullCustomer (4) {public:bool isNil(){ return true;﹜string getName(){ return 〝Not Available in Customer Database〞; ﹜﹜;class Customerfactory{public:string names[3]={〝rob〞, 〝Joe〞,〝Julie〞﹜;public:Customer*getCustomer(string name){for (int i=0;igetCustomer(〝rob〞);Customer*customer2=cf->getCustomer(〝Bob〞);Customer*customer3=cf->getCustomer(〝Julie〞);Customer*customer4=cf->getCustomer(〝Laura〞); coutgetName() getName() getName() getName() getCustomer();delete crs;return 0;﹜ /*程序输出为:CustomersrobNot Available in Customer DatabaseJulieNot Available in Customer Database*/
考题
阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。
【C++代码】
using namespace std;class Book;class Visitor {public: virtual void visit(Book* book)=0; //其它物品visit方法}; class Item {public:virtual void accept(Visitor* visitor)=0; virtual doublegetPrice()=0;};class Book (1){private: double price;public: Book (double price){ //访问本元素 (2); } void accept(Visitor* visitor) { (3); }double getPrice(){ returnprice; }};class Cashier(4){private; double totalForCart;public: //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book->getPrice()getPrice(); } else totalForCart+=book->getPrice()*0.8; } //其它visit方法和折扣策略类似,此处略 double getTotal() { return totalForCart; }};class ShoppingCart {private: vectoritems;public: double calculatePrice() { Cashier* visitor=new Cashier(); for(int i=0;i getTotal(); return total; } void add(Item*e) { items.push_back(e); }};
考题
阅读下列说明和 C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
生成器( Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。图 5-1 所示为其类图。
【C++代码】
#include
#include
using namespace std;
class Product {
private:? ??
string partA, partB;
public:
Product() {?? }
? ? ?void
setPartA(const string}
???? void
setPartB(const string}
//? 其余代码省略
};
class Builder {
public:
??????? (1)?? ;
virtual void buildPartB()=0;
??????? (2)?? ;
};
class ConcreteBuilder1 : public Builder {
private:
Product*?? product;
public:
ConcreteBuilder1() {product = new Product();???? }
??? void
buildPartA() {????? (3)???? ("Component A"); }
??? void
buildPartB() {????? (4)???? ("Component B"); }
Product* getResult() { return product; }
//? 其余代码省略
};
class ConcreteBuilder2 : public Builder {? ??
/*??? 代码省略??? */
};
class Director {
private:?
Builder* builder;
public:? ?
Director(Builder* pBuilder) { builder= pBuilder;}
???? void
construct() {
? ? ? ? ? ? ? (5)???? ;? ? ?
//? 其余代码省略
????? }
//? 其余代码省略
};
int main() {
Director* director1 = new Director(new ConcreteBuilder1());?
director1->construct();? ?
delete director1;? ??
return 0;
考题
问答题C++中的struct和class有什么区别?
热门标签
最新试卷