以下对类A的定义中正确的是() A. class A{private:int v;public : void Func(){}} B. class A{private : int v;A *next;}; C. class A{int v;public:void Func();};A::void Func(){} D. class A{int v;public: A next;void Func(){ }};
时间: 2024-04-26 22:23:40 浏览: 240
选项A和C是正确的类A的定义。
选项A中,类A定义了一个私有成员变量v和一个公有成员函数Func(),其中Func()没有参数和返回值。这是一个合法的类定义。
选项B中,类A定义了一个私有成员变量v和一个私有成员指针变量next。由于next是私有的,无法直接访问,也无法被类外部使用。因此,这个定义是不正确的。
选项C中,类A定义了一个私有成员变量v和一个公有成员函数Func(),其中Func()没有参数和返回值。另外,类外部还定义了Func()的实现,实现中访问了类的私有成员变量v。这也是一个合法的类定义。
选项D中,类A定义了一个私有成员变量v和一个公有成员函数Func(),同时定义了一个公有成员变量next,类型为A。由于A的大小是未知的,所以定义A类型的变量作为类的成员变量是不合法的。因此,这个定义是不正确的。
因此,正确答案是A和C。
相关问题
class Teacher { public: ... private: int num; string name; char sex; }; class BirthDate { public: ... private: int year; int month; int day; }; class Professor : public Teacher { public: ... private: BirthDate birthday; }; // 2 void fun1(Teacher &); void fun2(BirthDate &); fun1(prof1); fun2(prof1.birthday); fun2(prof1);oid func1(Teacher &); // 修改教授除生日外的信息,程序内给出 // 规定统一修改为: name = 张三, num = 10000, sex = m void func2(BirthDate &); // 修改教授的生日信息,即你传入的应该是prof1.birthday // 规定统一该项数据从键盘读取
这段程序中定义了三个类,分别为 `Teacher`、`BirthDate` 和 `Professor`。`Professor` 类继承自 `Teacher`,并包含一个 `BirthDate` 类型的对象 `birthday`。
以下是对程序中出现的函数进行补充:
```cpp
// 修改教授除生日外的信息
// 规定统一修改为: name = 张三, num = 10000, sex = m
void func1(Teacher &teacher) {
teacher.name = "张三";
teacher.num = 10000;
teacher.sex = 'm';
}
// 修改教授的生日信息
// 规定统一该项数据从键盘读取
void func2(BirthDate &birthDate) {
cout << "请输入出生年份:";
cin >> birthDate.year;
cout << "请输入出生月份:";
cin >> birthDate.month;
cout << "请输入出生日期:";
cin >> birthDate.day;
}
```
在 `func1` 函数中,修改了传入对象的 `name`、`num` 和 `sex` 三个成员变量的值。
在 `func2` 函数中,通过键盘输入修改了传入对象的 `year`、`month` 和 `day` 三个成员变量的值。
需要注意的是,在调用 `func2` 函数时,需要传入 `prof1.birthday` 对象,而不是 `prof1` 对象。
#include <iostream> using namespace std; class Base { public: Base(intifa=i: void add(int ila=ati:‹ voidprint(Jcouts'a="<<a<<endl; private: int a; ; class Derived: public Base { public: Derived(int i,int j):Base(i),b(i) void print( ){ cout<<"b="<<b<<endl;} void func1){ add(10); void func2(){ Base:: print); } private: int b; }; void main( { Base b(1): b.printO; Derived d(2,3); d.func1(); d.Base::print(); d.Derived::print(); d.func2();输出运行结果
很抱歉,我是一个语言模型,无法执行代码和运行程序。但我可以解释一下这段代码的大意:
这是一个 C++ 的类继承示例,其中有一个基类 Base 和一个派生类 Derived。在 Base 类中有一个私有成员变量 a 和一个公有成员函数 add 和 print。在 Derived 类中有一个私有成员变量 b 和三个公有成员函数 print、func1 和 func2。在 Derived 类的构造函数中通过调用 Base 类的构造函数初始化了 a,并且在 func1 函数中调用了 Base 类的 add 函数。而在 func2 函数中通过使用 Base::print 调用了 Base 类的 print 函数。
这段代码的输出结果无法确定,因为在题目中没有给出这些函数的具体实现,也缺少 main 函数的具体内容。
阅读全文