C++函数,不返回返回数据
C++ function without return returning data
对不起,
我在玩c++,我做了一些奇怪的事情,它起了作用,有人知道它为什么起作用。
主要.cpp
#include <iostream>
#include "c1.h"
using namespace std;
Classe c(){
Classe v();
}
int main(){
cout << c().x;
return 0;
}
c1.h
#include <iostream>
using namespace std;
class Classe{
public:
Classe(){
x = 100;;
}
int x;
};
那么,如果函数Classe c(){Classe v()}不返回变量,为什么我可以调用c().x呢?
有墙和没有墙都没有警告。
如果我在函数上返回v,它就不会编译:返回错误消息:
main.cpp:在函数"Classe c()"中:main.cpp:8:错误:从"Classe(*)()"到非标量类型"Classe"的转换请求
我认为这是偶然的,您的编译器应该警告您c()不会返回值。
意外地,用于从函数返回值的寄存器碰巧加载了该函数中分配的局部变量的地址。
顺便说一句,函数c()中局部v()的声明并没有声明Classe
类型的变量,而是声明一个不带参数的函数,返回一个Classe
类型的对象。
编译器不一定知道c
没有返回有效对象(它可以在远离main
的地方定义)。不过,编译c
时会收到编译器警告。
相关文章:
- 为什么我们使用在C++中返回数据结构的函数?
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- FFmpeg av_read_frame从音频流返回数据包
- 扩展 QStandardItem 不会返回数据
- C++ 根据给定的类型名从变量返回数据
- YAML-CPP的顺序返回数据
- 从全局 CUDA 函数返回数据
- C++ ostream 从对象数组返回数据
- 现代C++.从继续执行的工作线程返回数据结构
- 使用 JNI 通过从C++到 Java 的指针返回数据
- 为什么返回数据结构而不是指针弄乱了我的数据的完整性
- C++Curl,如何读取返回数据
- WSARecv()能否立即返回数据
- 处理 char * 的正确方法在 swig/python 中返回数据
- 如何使用 cppunit 断言宏来检查返回数据类型的预处理器值
- C++函数,不返回返回数据
- 通过.NET中的指针从本机方法返回数据
- 从if语句返回数据
- 更快地以数组形式返回数据的c++接口
- 模板,在派生类中返回数据的通用方法