有如下C++代码,请分析输出值的原理 #include <iostream> using namespace std; class A { int v1,v2; }; class B:public A { int v3; }; void main() { A x; B y; cout<<sizeof(x)<<endl; cout<<sizeof(y)<<endl; }
时间: 2024-03-18 22:39:28 浏览: 107
这段代码的输出是:
```
8
12
```
对于第一个`sizeof(x)`,输出的是`A`类的对象`x`的大小,而`A`类中只有两个`int`类型的成员变量,每个`int`类型占4个字节,所以`sizeof(x)`的值为8。
对于第二个`sizeof(y)`,输出的是`B`类的对象`y`的大小。`B`类是`A`类的子类,它继承了`A`类的两个`int`类型的成员变量,再加上自己的`int`类型成员变量`v3`,所以`sizeof(y)`的值为12。注意,由于`B`类继承了`A`类的成员变量,所以在计算`sizeof(y)`时并不会将`A`类的成员变量重复计算。
相关问题
#include<iostream> #include<fstream> using namespace std; class Dog { public: int getAge(){return a;} int getWeight(){return w;} void setdog(int x,int y){a=x;w=y;} private: int a,w; }; int main() { int v1,v2; Dog dog1; dog1.setdog(10,5); ofstream outFile("outfile.txt",ios::out); outFile<<dog1.getAge()<<" "<<dog1.getWeight(); outFile.close(); Dog dog2; ifstream inFile("outfile.txt",ios::in); inFile>>v1;inFile.seekg(1,ios::cur);inFile>>v2; dog2.setdog(v1,v2); outFile.close(); cout<<"dog1's age:"<<dog1.getAge()<<endl; cout<<"dog1's weight:"<<dog1.getWeight()<<endl; cout<<"dog2's age:"<<dog2.getAge()<<endl; cout<<"dog2's weight:"<<dog1.getWeight()<<endl; }
这是一个使用文件流进行读写的 C++ 程序。程序中定义了一个 Dog 类,包含两个私有成员变量 a 和 w,以及三个公有成员函数 getAge、getWeight 和 setdog。其中,getAge 和 getWeight 用于获取私有成员变量 a 和 w 的值,setdog 用于设置私有成员变量 a 和 w 的值。
在主函数中,首先创建一个 dog1 对象,并通过 setdog 函数设置其年龄为 10 岁,体重为 5 斤。然后通过 ofstream 类型的 outFile 对象打开一个名为 "outfile.txt" 的输出文件流,并将 dog1 的年龄和体重分别写入文件中。写入完成后,关闭文件流。
接着,创建一个 dog2 对象,并通过 ifstream 类型的 inFile 对象打开刚才写入的 "outfile.txt" 文件流。从文件中读取 dog1 的年龄和体重并赋值给 dog2,最后关闭文件流。
最后,程序输出 dog1 和 dog2 的年龄和体重。需要注意的是,由于程序中读取文件时使用了 seekg 函数,所以在读取体重值时需要将文件指针向后移动一位。另外,程序中关闭文件时有一个小错误,应该将 inFile.close() 改为 outFile.close()。
#include<iostream> #include<string> //头文件 using namespace std ; /* 请在这里填写答案 */ #include<algorithm> using namespace std; class Book{ private: string ID; string name; int num; public: Book(string v1="000",string v2="book",int v3=0){ ID=v1; name=v2; num=v3; } void setID(string v1){ ID=v1; } void setName(string v2){ name=v2; } void setNum(int v3){ num=v3; } string getID(){ return ID; } string getName(){ return name; } int getNum(){ return num; } void display()const{ cout<<ID<<"-"<<name<<"-"<<num; } }; void in(Book book[],int n){ for(int i=0,i<n,i++){ cin>>book[i].ID>>book[i].name>>book[i].num; } } int findMin(Book book[],int n){ sort(book[0].num,book[n-1].num); return book[0].num; } void outmin(Book book[],int n,int minNum){ for(int i=0,i<n,i++){ if(book[i].num=book[0].num) cout<<book[i].ID<<"-"<<book[i].name<<"-"<<book[i].num; } } int main(void) { Book book[4] ; int minNum=0; in(book,4); minNum=findMin(book,4); outmin(book,4,minNum); return 0 ; } /* 请在这里填写答案 */
题目描述:给定一个 Book 类,包含 ID、name、num 三个属性,分别代表编号、名称和数量。实现以下三个函数:
1. void in(Book book[],int n),输入 n 本书的信息,存储在 book 数组中。
2. int findMin(Book book[],int n),返回 book 数组中 num 最小的书的数量。
3. void outmin(Book book[],int n,int minNum),输出 book 数组中所有数量为 minNum 的书的信息。
代码实现如下:
```c++
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
class Book{
private:
string ID;
string name;
int num;
public:
Book(string v1="000",string v2="book",int v3=0){
ID=v1;
name=v2;
num=v3;
}
void setID(string v1){
ID=v1;
}
void setName(string v2){
name=v2;
}
void setNum(int v3){
num=v3;
}
string getID(){
return ID;
}
string getName(){
return name;
}
int getNum(){
return num;
}
void display()const{
cout<<ID<<"-"<<name<<"-"<<num;
}
};
void in(Book book[],int n){
for(int i=0;i<n;i++){
cin>>book[i].ID>>book[i].name>>book[i].num;
}
}
int findMin(Book book[],int n){
sort(book,book+n,[](const Book &a, const Book &b){
return a.getNum() < b.getNum();
});
return book[0].getNum();
}
void outmin(Book book[],int n,int minNum){
for(int i=0;i<n;i++){
if(book[i].getNum() == minNum)
cout<<book[i].getID()<<"-"<<book[i].getName()<<"-"<<book[i].getNum()<<endl;
}
}
int main(void) {
Book book[4] ;
int minNum=0;
in(book,4);
minNum=findMin(book,4);
outmin(book,4,minNum);
return 0 ;
}
```
阅读全文