在阅读标准时,我真的很惊讶地看到,实际上,名称在声明中是可选的:
struct Magic {};
int main() {
int; // well-formed
Magic; // well-formed
}
Run Code Online (Sandbox Code Playgroud)
对于那些有兴趣阅读标准的人来说,这是因为在简单声明中,init-declarator-list是可选的.这是一个演示.
所以我真的想知道为什么这是允许的.我为什么要这么做?这对我来说毫无意义.我的理由是,因为如果没有意义,为什么要允许呢?
任何人都可以解释*p=*q这个C++代码的含义吗?这是一个复制构造函数的概念吗?
class A{
//any code
}
int main(){
A *p=new A();
A *q=new A();
*p=*q;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 因此,我创建了“汽车”类。然后,我为我的课堂汽车中的对象创建变量(audi)。一切都很好,但我注意到我可以创建一个对象(引擎值为50),而无需指定要保存的变量。那么现在如何访问该对象?
#include <iostream>
using namespace std;
class Cars
{
public:
int getStatus();
Cars(int engine=5);
private:
int m_engine;
};
Cars::Cars(int engine)
{
m_engine=engine;
cout<<"A new car is made."<<endl;
}
Cars::getStatus()
{
cout<<m_engine<<endl;
}
int main()
{
Cars audi(10);
audi.getStatus();
Cars(50);
}
Run Code Online (Sandbox Code Playgroud) 有时我需要实例化一个类才能调用它的一个方法.例如,在Qt中读取注册表.
QSettings settings;
settings.setValue( DEST_FOLDER, destDir );
Run Code Online (Sandbox Code Playgroud)
但我改用这种语法.
QSettings().setValue( DEST_FOLDER, destDir );
Run Code Online (Sandbox Code Playgroud)
它有效,但我没有看到任何关于它的文档,它叫什么?我搜索了"无名的c ++类",但它没有出现.有匿名课程,但我认为这是不同的.
我的问题是它有点像调用构造函数..这种语法有没有名称?有人可以解释或指向我这种初始化的文档吗?愚蠢的问题但这样做不好吗?
在由静态数据字段引起的消费者文件中询问C++ Error链接之后,我为StateConservator的一个实例尝试了两种不同的声明:
StateConservator cs(*pContainer, pDoc->GetConfiguration());
Run Code Online (Sandbox Code Playgroud)
和
StateConservator(*pContainer, pDoc->GetConfiguration());
Run Code Online (Sandbox Code Playgroud)
第一个做了我想要的,它只在范围结束后才传递析构函数.第二个在声明本身的行中传递析构函数.
编译器是否正常运行?如果是正确的行为,在该行中声明匿名变量的方法是什么?
c++ ×4
anonymous ×1
c++11 ×1
c++14 ×1
class ×1
constructor ×1
declaration ×1
definition ×1
object ×1
oop ×1
pointers ×1