{ st=’\\0’; }
String ::String(char *s)
{ st=new char[_strlen(s)+1_ ]; strcpy(st,s); }
String ::~String( ) { delete _[]st_; }
int String ::operator= =(_String_ &tar) { return strcmp(_st_, tar.st) = =0; } void main( )
{ String youname(“zhang”); String myname(“Lou”);
cout<<(myname= = youname); }
运算符重载有两种实现方法,一种是通过友元函数来实现,另一种通过(成员)函数来实现。 运算符重载有两种实现方法,一种是通过成员函数来实现,另一种则通过_友元函数_ 来实现。
为了满足运算符“+”的可交换性,必须将其重载为_友元函数_。 运算符重载仍然保持其原来的优先级、操作个数和结合性。 利用成员函数对双目运算符重载,其左操作数为_this指针_,右操作数为__成员函数参数_。 类的构造函数__不可以_(可以/不可以)是虚函数,类的析构函数_可以_ (可以/不可以)是虚函数。当类中存在动态内存分配时经常将类的__析构函数_函数声明成虚函数。 纯虚函数是一种特别的虚函数,它没有函数的_函数体_部分,也没有为函数的功能提供实现的代码,它的实现版本必须由_派生类_给出,因此纯虚函数不能是友元函数。拥有纯虚函数的类就是_抽象类_类,这种类不能实例化。如果纯虚函数没有被重载,则派生类将继承此纯虚函数,即该派生类也是_抽象_类。
虚函数的声明方法是在函数原型前加上关键字_virtual_。在基类中含有虚函数,在派生类中的函数没有显式写出virtual关键字,系统依据以下规则判断派生类的这个函数是否是虚函数:该函数是否和基类的_虚函数_同名;是否与基类的虚函数_参数个数相同、类型_ ;是否与基类的虚函数_相同返回类型_ 。如果满足上述3个条件,派生类的函数就是虚函数。并且该函数覆盖基类的虚函数。
C++支持两种多态性,分别是 编译时 和 运行时 。 C++将类继承分为_单继承__和_多继承_两种。
派生类的构造函数一般有3项工作要完成:首先 基类初始化 ,其次 成员 对象初始化 ,最后执行派生类构造函数体。
当公有派生时,基类的公有成员成为派生类的 公有成员 ;保护成员成为派生类的 保护成员 ;私有成员成为派生类的 不能直接访问成员 。
当保护派生时,基类的公有成员成为派生类的 保护成员 ;保护成员成为派生类的 保护成员 ;私有成员成为派生类的 不能直接访问成员 。
在C++中,三种派生方式的说明符号为 public 、 private 、 protected 不加说明,则默认的派生方式为 private 。
补充以下程序,使其输出结果为20,40。
#include
__public:___ int x; public:
A(int x=20){___A::x=x ___;} };
class B:public A {
int y; public:
B(int i=30,intj=40) ___{A::X=20;y=j}_____ void print()
{_cout<
void main() { B b;
b.print(); }
补充以下类,使其能正确运行。 #include
private: int x1,x2; static int y; public:
P(_int i=0,int j=0_){x1 = i; x2 = j; } };
_int P::y _=0; //对静态成员y赋值 void main() {
P data[20]; }
类CPoint中的成员函数Init的功能是用已知对象给另一对象赋值,请将其补充完整。 class CPoint {
int x,y; public:
CPoint(int i,intj){ x = i; y = j; } void Init(CPoint& k) {
if(_this==&k_) return; //防止自身赋值 _*this _=k; } };
如果在定义类时没有定义构造函数,则编译系统会 默认构造函数 。如果用一个已经定义的对象去初始化另一个对象,则系统会调用 拷贝构造函数 。
类具有 继承、封装 、多态 的性质,所以所编出的程序安全性好,重用性好。 对象是类的实例。
类的成员的访问属性有三种,分别是 公共成员 、 私有成员 、 保护成员 。
类是 对象 的集合,分类的依据是 具有相同的结构和特性 。
构成对象的两个主要因素是 属性 和 行为 ,其中 行为 属于动态属性, 属性 属于静态属性, 成员数据只能由成员函数来操作。
写出程序程序执行结果( 5 10 3): #include
int number; void set(int i); };
int number=3;
void MyClass::set (int i){ number=i; }
void main( ){ MyClass my1; int number=10; my1.set(5);
cout< cout< 写出程序程序执行结果( 5,7 ): #include AA(int k):n(k){} int get( ) {return n;} int get( ) const{ return n+1;} }; int main( ) { AA a(5); const AA b(6); cout< 写出程序程序执行结果( n=0): #include Test( ) { n+=2; } ~Test( ) { n-=3;} static int getNum( ) { return n;} private: static int n; }; int Test::n=1; int main( ){ Test* p = new Test; delete p; cout<<”n=”< 类的访问限定符包括public、 private 和(potected) 。类成员默认的访问方式是(private) 。访问限定符在类中无 先后次序,各限定符(允许)(允许/不允许)多次出现。 类定义的关键字是(class),类的数据成员通常指定为( 私有),类的函数成员通常指定为(公有),指定为(公有)的类成员可以在类对象所在域中的任何位置访问它们。 定义语句int *f();和int (*f)();的含义分别为_f表示一个函数名,其返回值类型为int *_和_表示f是函数指针,它可以指向一个返回值为int类型。 设main函数的说明为: main( int argc, char *argv[]),且有命令行为:FILE1 1 2 3 判断题 试题1: 运算符重载是通过函数来实现的,定义运算符重载函数时,函数名中要使用关键字 operator。( T ) 试题2: 在c++中,只能重载已有的运算符。( T ) 试题3: 私有继承中,基类中所有成员对派生类的对象都是不可见的。( F ) 试题4: 类成员的默认访问模式是private。( T ) 试题5: 一个类只能拥有一个对象。( F ) 试题6: 友元是可以继承的。( F ) 试题7: 对象是类的模板,类是对象的实例化。( F ) 试题8: 构造函数名字和类名相同,构造函数可以带默认参数,可以重载,在创建对象时自 动执行。( T ) 试题9: 结构体变量能整体进行输入输出。( F ) 试题10: C++语言结构体类型变量在程序执行期间,所有成员驻留在内存中。( T ) 试题1: 使用关键字class定义的类中默认的访问权限是私有的(private)。( T ) 试题2: 静态类标识符在它的作用域之外是不存在的。( F) 试题3: 函数形参的作用域是该函数的函数体。( T ) 试题4: 在设置了参数默认值后,调用函数的对应实参就必须省略。( F) 试题5: 使用内置函数是以增大空间开销为代价的。(T) 试题6: 基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能 被其他的函数访问。( F ) 试题7: 说明函数原型时不需要指明每个函数参数的名字,只需说明每个参数的类型和返回 值类型就可以了。( T ) 试题8: 函数重载既要求两函数参数对应的类型不同又要求参数个数不同。( F ) 试题9: 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修 改所带来的编译工作量。( T ) 试题10: 派生类的成员函数可以直接访问基类的所有成员。( F ) 试题1: 在类Time中的析构函数可以声明为:void ~Time(int); ( F ) 试题2: 一个派生类不能作为基类被别的派生类继承。(F ) 试题3: 类中所提供的成员函数可以直接访问私有成员。( T ) 试题4: 如果在一个类的对象之间要进行数据交换,可以使用该类的静态数据成员来完成。 ( T ) 试题5: 友元关系是单向的,不可交换的。( T ) 试题6: 每个类都必须自己定义构造函数和析构函数。( F ) 试题7: 析构函数没有形参,没有返回值,不能重载。( T ) 试题8: 内联函数中不可以包括复杂语句,如switch及循环语句等。( T ) 试题9: 结构体中的成员(域),不可以单独使用。( T ) 试题10: 结构体的定义不为它分配具体的内存空间。( T ) 试题1: 用new动态申请的内存空间,必须用delete来释放。( T ) 试题2: 说明函数原型时不需要指明每个函数参数的名字,只需说明每个参数的类型和返回 值类型就可以了。( T ) 试题3: 无论什么方式的继承,基类的私有成员都不能被派生类访问。( T ) 试题4: 类的私有成员只能被类中的成员函数访问,任何以外的函数对它们的访问都是非法 的。( F ) 试题5: 派生类的成员除了它自己的成员外,还包含了它的基类的所有成员。( T) 试题6: 用new运算符来创建对象时不会调用构造函数。( F ) 试题7: 构造函数的名字不一定要和类的名字一样。( F ) 试题8: 任何一个对象只能属于一个具体的类。( T ) 试题9: 对抽象类不能定义对象。( T) 试题10: 使用关键字class定义的类中默认的访问权限是私有(private)的。( T )