我正在尝试学习如何使用常量函数和对象,但是,我有一些错误使我保持了一个多小时,我似乎无法弄明白.我跟着一个简单的例子,我想我在路上的某个地方迷路了.这是我的代码.
Main.cpp的
#include <iostream>
#include "ExampleClass.h"
int main(){
ExampleClass exampleObj; // object used to call members of ExampleClass.
exampleObj.printText(); // calls printVar from the ExampleClass.
const ExampleClass constantObject; // object used to call constant members of ExampleClass.
constantObject.printConstText(); // calls printConstVar from the ExampleClass.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
ExampleClass.h
#ifndef EXAMPLECLASS_H
#define EXAMPLECLASS_H
class ExampleClass
{
public:
void printText();
void printConstText() const;
};
#endif // EXAMPLECLASS_H
Run Code Online (Sandbox Code Playgroud)
ExampleClass.cpp
#include <iostream>
#include "ExampleClass.h"
void ExampleClass::printText(){
std::cout << "The code works!" << "\n";
} …Run Code Online (Sandbox Code Playgroud) 有这样的代码:
class MojaKlasa{
public:
};
int main()
{
const MojaKlasa a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器错误是:
error: uninitialized const ‘a’
Run Code Online (Sandbox Code Playgroud)
但是在修改了MojaKlasa课程之后:
class MojaKlasa{
public:
MojaKlasa(){}
};
Run Code Online (Sandbox Code Playgroud)
它可以正常工作.默认构造函数应该由C++自动定义 - 为什么不在这种情况下完成,并且必须显式定义默认构造函数?