Perguntas com a marcação «c++»

C ++ é uma linguagem de programação de uso geral. Foi originalmente projetado como uma extensão para C e tem uma sintaxe semelhante, mas agora é uma linguagem completamente diferente. Use esta tag para perguntas sobre o código (a ser) compilado com um compilador C ++. Use uma tag específica da versão para perguntas relacionadas a uma revisão padrão específica [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20] etc.


2
Por que não podemos criar objetos trivialmente construtíveis usando malloc se o construtor trivial padrão não executa nenhuma ação?
Tenho dificuldade em entender o parágrafo a seguir citado na cppreference sobre o construtor padrão trivial. Pesquisei stackoverflow, mas ainda não recebi uma resposta clara. Então por favor ajude. Um construtor padrão trivial é um construtor que não executa nenhuma ação. Todos os tipos de dados compatíveis com a linguagem …

2
copiar e mover construtores são amigos automáticos?
Podemos acessar variáveis ​​privadas de outra classe quando definimos copiar ou mover construtores. O C ++ os friendcria automaticamente automaticamente? Por exemplo: my_str::my_str(my_str&& m) { size_ = m.size_; //accessing private variable another my_str class buff_ = m.buff_; //accessing private variable another my_str class m.buff_ = nullptr; m.size_ = 0; }
14 c++  friend-class 

3
Por que a dimensão de uma matriz faz parte de seu tipo?
Ao ler o livro C ++ Primer, deparei-me com esta declaração: "O número de elementos em uma matriz faz parte do tipo da matriz". Então, eu queria descobrir usando o seguinte código: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints …
14 c++  arrays  c++11 


3
É necessário um nome de classe totalmente qualificado para o escopo global para definições de função de membro fora de linha?
Essa pergunta me fez pensar se é útil / necessário qualificar totalmente os nomes de classe (incluindo o operador de escopo global) em uma definição de função de membro fora da classe. Por um lado, nunca vi isso antes (e a sintaxe para fazê-lo corretamente parece obscura). Por outro lado, …





1
O construtor std :: vector range pode invocar conversões explícitas?
O programa a seguir está bem formado? #include <vector> struct A { explicit A(int) {} }; int main() { std::vector<int> vi = {1, 2, 3, 4, 5}; std::vector<A> va(vi.begin(), vi.end()); } De acordo com o C ++ 17 [sequence.reqmts], o requisito para X u(i, j); onde Xé um contêiner de …
14 c++  c++17 

3
Sobrecarregar uma função lambda
Como sobrecarregar uma função lambda local simples? SSE do problema original: #include <iostream> #include <map> void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map<char, int> table{ {'a', 0}, {'b', …

3
A função de modelo não funciona para a função ponteiro para membro que faz const ref
Ultimamente, escrevi uma função de modelo para resolver algumas repetições de código. Se parece com isso: template<class T, class R, class... Args> R call_or_throw(const std::weak_ptr<T>& ptr, const std::string& error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) { return std::invoke(fun, *sp, args...); } else { throw std::runtime_error(error.c_str()); } …
14 c++  templates 

3
std :: bit_cast com std :: array
Em sua recente palestra “Type punping in C ++ moderno”, Timur Doumler disse que std::bit_castnão pode ser usado para converter um bit floatem um, unsigned char[4]porque matrizes no estilo C não podem ser retornadas de uma função. Devemos usar std::memcpyou aguardar até C ++ 23 (ou mais recente) quando algo …

1
Como a implementação do c ++ nullptr funciona?
Estou curioso para saber como nullptrfunciona. Os padrões N4659 e N4849 dizem: tem que ter tipo std::nullptr_t; você não pode pegar o endereço dele; pode ser convertido diretamente em um ponteiro e ponteiro em membro; sizeof(std::nullptr_t) == sizeof(void*); sua conversão para boolé false; seu valor pode ser convertido para o …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.