例如:
int a = 12;
cout << typeof(a) << endl;
Run Code Online (Sandbox Code Playgroud)
预期产量:
int
Run Code Online (Sandbox Code Playgroud) 让我们说我们有一个类层次结构.在底部我们有Base和顶部Derived.如何确定对象类,即使它被转换为基类指针.
Base* b = new Derived():
typeid(b).name(); // i want this to tell me that this is actually derived not base object
Run Code Online (Sandbox Code Playgroud)
有什么方法除了手动实现字符串字段或这样的虚拟get函数?
PS:我在谈论与编译器无关的解决方案
我有一个函数在某处调用x,返回一个已知值并具有已知参数:
int x(int y);
Run Code Online (Sandbox Code Playgroud)
我还有其他地方,我想创建一个容器来包含n这个函数的调用.然后我想多次执行它.
问题是,我不想依赖它作为int返回类型.我需要在编译时推断出返回类型.就像是:
std::vector<result_of<x(int)>::type> results;
Run Code Online (Sandbox Code Playgroud)
但我不想指定参数值,因为它们是静态的.
我正在尝试查找变量的类型。在 stackoverflow 中提到了decltype()用于此目的。但是当我尝试使用它时,它会抛出我在标题中提到的错误。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x = 4;
cout << decltype(x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我预料到了int,但它显示为错误。error: expected primary-expression before 'decltype'
在Python中,为了比较变量的类型,有一个函数“type”,例如:a = 10和b =“abc”,类型(a)!= 类型 (b)。C++中有类似的东西吗?我有一个基类对象向量,我想查看该向量的元素是否已声明为派生类。
我从 Josh Lospinoso 的 C++ 速成课程开始学习 C++。
我无法将我的思想集中在“类型”上。
long long int a=50和 和有什么区别int a =50LL?对我来说,他们俩看起来都像long long int
我尝试运行这个:
#include<cstdio>
int main() {
long long int a=50;
int b=50LL;
printf("a is %lld and b is %lld",a,b);
}
Run Code Online (Sandbox Code Playgroud)
并得到:
a 为 50,b 为 18042367336513586
所以格式说明符或有问题int b=50LL
将 b 的格式说明符更改为%d. 我得到:
a 为 50,b 为 50
那么这是否意味着这b是默认的 'int' ?如果是的话,那么它的作用是什么LL?
在浏览类型时,我发现了这个。所以我尝试运行这个:
#include <iostream>
#include <typeinfo>
int main(){
long long int a …Run Code Online (Sandbox Code Playgroud) 我想知道的是,如果我要求用户输入内容,如果输入是整数或字符串或浮点值,我将如何输出.我想要一些方法来检查C++ 14中输入的数据类型.
例如.
如果输入是"Hello world"
输出应为:"输入为字符串"
如果输入为"134"
输出应为:"输入为整数"
如果输入是"133.23"
输出应为:"输入是浮动的"