C++低级错误集合

1)
忽略权限声明

忽略权限声明,说白了,忘记写public

2)
http://blog.csdn.net/slwbcsdn/article/details/52735325

经常遇到的obj和exe文件的错误:无法解析的外部命令。这个错误吧,可能因为在exe文件所以VS2013不会确定代码哪一行的问题,说白了,这个错误编译器帮不了忙了,只能自己找。怎么解决呢?看链接。

3)
这里写图片描述

class的大括号后面要加分号结尾

4)

class DerivedBase : public BaseClass
{
public:
    DerivedBase(){};
    ~DerivedBase(){}
    void fn1();
    void fn2();
};

这是我一开始写的一个派生类,但是后来发现,原来酱也可以,没毛病:

class DerivedBase : public BaseClass
{
public:
    void fn1();
    void fn2();
};

这里写图片描述

这里写图片描述
难道派生类可以通过基类的构造函数产生?想一想不对啊,构造函数是不能继承的。再一想,应该是默认的构造函数和析构函数被调用了。嗯哼。好迷啊。

5)
这里写图片描述
错误想法:继承之后,Rectangle类就已经“有了”getArea();
正解:getArea()被重写,函数体已经改变,所以必须在派生类中再次声明函数。

6)
这里写图片描述

error: ‘void Person::eat()’ is inaccessible

error: ‘Person’ is not an accessible base of ‘ChildLabourer’

很显然要改为virtual public虚继承

7)
错误显示说,构造函数已有主体。错误原因,构造函数声明时加了大括号

8)这里写图片描述
所以,这里应该写Worker(name), Children(age)

9)这里写图片描述
就像java声明对象再创建对象的思路,也可以理解C++中用new关键字创建类对象时,对象的本质应该是指针,所以应该是*a

10)这里写图片描述
记得创建之后要初始化。

11)这里写图片描述
虚继承也要说明继承的方式是public,protected,private。

12)

error C3872: “0x3000”: 此字符不允许在标识符中使用

你看看是不是你#define的时候自作多情打了好几个空格(0x3000是汉语的空格)。

13)

int main(){
    int a;
    int* const p1= &a;   //指针类型的常量
    p1 = &a;             //你不能改变指针常量p1的值
    return 0;
}

error C3892: “p1”: 不能给常量赋值
IntelliSense: 表达式必须是可修改的左值

可能会有好几种问题报这个bug,但是这里关心的是指针和const常量

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页