• oop总复习1


    1、在构造对象时如果没有给定参数值,最好设定默认值,以免后期需要输出时输出乱码;
    2、当静态数据成员用来统计构造的对象数量时,可以采用在构造函数以及复制构造函数中对静态数据成员中自加;
    静态数据成员不能在类内赋值,应在类外赋值;
    3、审题需谨慎,利用自定义函数可以大大减少工作量
    4、根据题目需要事先确定类的数据成员类型,不清楚时,int与double之间首选double,以免之后改动浪费时间
    5、void类型函数由于无返回值,所以大多的作用是实行操作,常用的赋值、打印、指针移动等等,可参考第四次作业7-4立方体类的实现
    6、未总结题目
    (1)第五次作业6-4对象指针与对象数组(拉丁舞) (15分)
    (2)第五次作业7-6 2017final英文语句格式简单检查 (30分)
    (3)第六次作业6-1 数组排序输出(函数模板) (10分)
    (4)第六次作业7-6 运算符重载 (10分)
    7、自定义函数返回类型为自定义类的指针时,返回类的对象数组名
    8、常对象只能调用常函数,所以要在需要调用的函数后加const,声明为常函数;
    9、要去复习一下类模板
    10、在题目提供部分代码的题目中要注意自己写的代码命名与题目代码相一致,编译器报错有时候无法正确显示,要记住这一点
    11、做题时要考虑特别情况,比如在除法中要考虑分母分子为0的情况,有些参数要结合具体意义进行考虑
    12、注意复数的乘法不仅仅是实属乘实数,虚数乘虚数,还有实数与虚数相乘,i的平方为-1的操作
    13、采用类模板的类名需要在“::”之前加上,为类名::函数名();
    14、友元函数在类外实现的时候不用加friend,含有默认值的函数只要在声明的时候体现默认值
    15、友元函数为另一类的函数,友元函数的参数有其他类的函数,要注意类的声明,防止引用未知
    如:

    class CodeMonkey;//先声明,在ProductDog类中两个公有函数都有CodeMonkey类型的参数;
    class ProductDog {
    public:
    	void add_todolist(CodeMonkey&, int);//参数中有CodeMonkey类型的参数
    	void reduce_todolist(CodeMonkey&, int);
    };
    class CodeMonkey {
    	string name;
    	int todolist;
    public:
    	CodeMonkey() {}
    	~CodeMonkey() {}
    	CodeMonkey(string na, int todo) :name(na), todolist(todo) {}
    	int sizeof_todolist();
    	friend void  ProductDog::add_todolist(CodeMonkey&, int);//该友元函数来自另外一个类
    	friend void  ProductDog::reduce_todolist(CodeMonkey&, int);
    };
    

    16、有些不明错误可能是上一行没有写分号,尤其要注意类最后有个分号,题目给出的时候经常没给;
    17、在类中定义某些函数却无法访问(包括运算符重载函数),可能是没有放在public,如上次便是放在了protected
    18、一般直接在类中加上无参构造函数
    19、如果某些函数需要有返回值来标记不同情况,但题目所给出的函数形式为void,可以使用类中的某一个变量来标记,或者自定义一个全局变量来标记,最好在每次使用这种函数的时候重置该变量,以免多次使用该函数后产生错误;
    20、涉及格式控制输出推荐使用printf,其中当输出002时,即printf("%03d",2);保留三位小数则printf("%.3f",a);
    21、使用<<或>>时最好用空格,以免编译器有时候会认为是重载符号而没有识别到
    22、在输出时注意格式,以免再回来改动
    23、含有至少一个纯虚函数的类就是抽象类,抽象类是无法实例化对象的,但抽象类可以声明指针;
    24、如果抽象类有两个纯虚函数,但其派生类只定义了一个纯虚函数,由于还有一个纯虚函数没有定义,所以没有定义的纯虚函数仍未纯虚函数,该派生类仍未抽象类,所以该派生类仍无法实例化对象,一定要把全部纯虚函数都定义,则该类才是可以实例化对象的;
    25、不能重载的运算符

    (".*", "::", ".", "sizeof", ":?");
    

    26、重载函数的返回值类型不被作为考虑因素,

    系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( A )。 
    A函数的返回值类型
    B参数的类型
    C函数名称
    D参数个数
    
    对定义重载函数的下列要求中,_是错误的。( D ) 
    A要求参数的个数不同
    B要求参数中至少有一个类型不同
    C要求参数个数相同时,参数类型不同
    D要求函数的返回值不同
    

    27、静态函数和构造函数不能是虚函数,析构函数可以是虚函数,虚函数不能是静态成员
    虚析构函数的作用是delete动态对象时释放资源
    28、多态的实现必须是通过公有继承
    29、动态绑定在运行时确定所调用的函数代码,重载函数是在编译时确定操作函数的。

  • 相关阅读:
    微信支付收款限制
    手机自动化截图调试工具——PhotoShop
    ZipSecureFile$ThresholdInputStream cannot be cast to java.base/java.util.zip.ZipFile$ZipFileInputStream
    [Leetcode题解]605. 种花问题-贪心算法+卫语句重构
    「问题修复」「cargo」warning: spurious network error (2 tries remaining): [6] Couldn't resolve host name (Could not resolve host: crates)
    久坐程序员,简单高效的保命技巧,以及某人久坐的惨样
    [Leetcode题解]2. 两数相加-链表遍历和重构
    Go语言基础知识01-用Go打个招呼
    【Qt Tips】QLineEdit内容过滤之setValidator和setInputMask浅析
    Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
  • 原文地址:https://www.cnblogs.com/xiao-qingjiang/p/13130245.html
Copyright © 2020-2023  润新知