CC++易错小问题记录

    技术2022-05-19  26

    1、若声明了重构函数(析构函数),而不去实现它,则编译类时可以通过,但在主函数中使用该类则编译器会报错:

        unresolved external symbol "public: __thiscall..............

    2、类的设计(以设计yyy类为例)

    (1)xxx.h                              

    #ifndef XXX_H_ #define XXX_H_ class yyy{ //---------- }; #endif

    (2)xxx.cpp

    #include <iostream> #include "xxx.h" //类实现 ‘

    (3)usexxx.c

    #include <iostream> #include "xxx.h" int main() { return 0; }

    3、若在成员函数声明时将形参赋初值,则使用这个成员函数时可以不传递参数

    4、继承是不显式申明为public继承,则不能使用基类中的方法

    #include <iostream> class cls1 { public: cls1() { std::cout<<"cls1"<<std::endl; } void show() { std::cout<<"show1"<<std::endl; } }; class cls2:public cls1 { public: cls2() { std::cout<<"cls2"<<std::endl; } void show2() { std::cout<<"cls2 show2"<<std::endl; } }; int main() { cls2 obj; obj.show();//若cls2继承cls1不声明为public,该句不能编译通过 return 0; }

    5、自动变量    凡是在函数内部的局部变量,都是自动变量(注意与百度百科里说的不一样)    each local variable in a function comes into existence only when the function is called, and disappears when the function is exited. This is why such variables are usually known as automatic variables.  "The C Programming Language"

    6,指针与数组间不一般的关系: Any operation that can be achieved by array subscripting can also be done with pointers.

          它们只有一个区别:指针是变量,数组名不是变量(a++就错了)

    7,关于EOF

    EOF 的值是 0xffffffff

    ctrl+d(linux)。注意,在我的ubuntu下,要按两次ctrl+d,而不是一次enter一次ctrl+d(虽然也能结束程序,但并不代表EOF) ctrl+z(windows) 因为linux下ctrl+z会出发信号SIGSTOP

    8,把符号常量(20,30)用define或const处理掉

    9,getchar(),直到输入回车,才到stdin中读取一个字符;当然那这一次输入流也包括回车符。

    10, 假设有类A, 则

    A a1; A a2(a1);//调用copy构造函数

    A a1, a2=a1;// 调用copy构造函数

    A a1, a2;a1=a2;//调用copy assignment 运算符

     


    最新回复(0)