c++题目,这道题为什么选b?

如题所述

A:一般类的默认构造函数(无参)会自动生成,但是如果你定义了有参数的构造函数,那么就不会自动生成默认构造函数,需要你自己在定义一个默认的构造函数。而A选项定义了没有参数的类对象,所以调用默认构造函数,但是类却没有定义默认构造函数,所以错误。
B: 是定义对象的指针,并没有创建对象,所以没有调用类的构造函数。不会出错
C:data是在类的private部分,也就是说,data只能通过类方法来访问,不能通过类对象直接访问。所以错误
D:MyClass是类名,不是类对象。所以其要想表示类的方法则需要解析符号
MyClass::show(); //类名调用
或者
MyClass x(3); //类对象调用
x.show();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-17
1) MyClass类的构造函数需要接受一个整形参数,故A答案不正确,正确的为:MyClass mfirst(10);
2) 定义一个类的指针变量,语法正确;
3) 成员变量的使用必须先定义对象,所以应先定义对象,再用对象名.成员名进行访问;若成员变量为静态成员,是可以使用MyClass::data=6进行赋值的,在访问时还需遵守访问权限的约定;
4) 与上面相同;
第2个回答  2015-09-17
A,类没有默认构造函数,无法构造,正确使用的例子:MyClass mfirst(0);
C,data是私有成员,并且非静态成员,必须用MyClass构造一个实体,用实体才能对对象的数据成员赋值,正确使用的例子:MyClass mfirst(0);因为是私有所以无法对data赋值
D,show非静态函数,必须定义一个类对象才能调用 正确使用的例子:MyClass mfirst(0); mfirst.show();
第3个回答  2015-09-17
A:没有可用的无参构造函数。
C:data为private成员,不能在类外非友元函数中使用。
D:MyClass为类名,不能调用非静态成员函数。调用静态函数应该使用"::"而不是"."。
第4个回答  2015-09-17
因为 不能直接使用 类中项 ,所以用 B 中的指针来引用
相似回答