«c++» 태그된 질문

C ++는 범용 프로그래밍 언어입니다. 원래 C에 대한 확장으로 설계되었으며 유사한 구문을 갖지만 이제는 완전히 다른 언어입니다. C ++ 컴파일러로 컴파일 된 코드에 대한 질문에이 태그를 사용하십시오. 특정 표준 개정 [C ++ 11], [C ++ 14], [C ++ 17] 또는 [C ++ 20] 등과 관련된 질문에 버전 별 태그를 사용하십시오.

1
새로운 (This) ThisClass ()가 나쁜 생각입니까?
class FooView final : public Something { ... void refresh() { this->~FooView(); new (this) FooView(); } } 나는이 관용구를 본 적이 없으며 그것이 실제로 미묘하고 지저분 할 수있는 것처럼 보이지만 실제로 ( FooView최종의 경우) 그것에 대한 문제를 생각할 수는 없습니다 . 이것은 나쁜 생각입니까?


1
std :: string 및 C 스타일 문자열 리터럴 비교
다음 코드가 있다고 가정하십시오. #include <iostream> #include <string> #include <iomanip> using namespace std; // or std:: int main() { string s1{ "Apple" }; cout << boolalpha; cout << (s1 == "Apple") << endl; //true } 내 질문은 : 시스템은이 둘 사이를 어떻게 확인합니까? s1객체 "Apple"는 C 스타일 문자열 리터럴입니다. 내가 …

1
연산자 new의 실행 순서와 생성자의 인수
합니까 C ++은 순서 지정 사양 operator new과의 생성자 A에를 new C(A()). g는 순서하자 ++ A()-> new-> C()하지만, 그 소리가하자 ++ new-> A()-> C(). 차이가 지정되지 않은 동작으로 인해 발생합니까? g ++ : 7.4.0 clang ++ : 10.0.0 #include <iostream> #include <cstdlib> struct A { A() { std::cout << "call …

1
널 포인터에 0을 추가 할 수 있습니까?
널 포인터에 대해서는 포인터 산술이 허용되지 않는다는 것을 알고 있습니다. 그러나 다음과 같은 것이 있다고 상상해보십시오. class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin() const { …

1
템플릿 및 이름 조회 이해
다음 코드 스 니펫을 이해하려고합니다. 스 니펫 # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; gcc9 또는 clang9 모두 여기에 오류가 발생하지 않습니다. Q.이 코드는 왜 컴파일됩니까? A<B>B에서 상속받을 때 인스턴스화하지 않습니까? B에는 VD가 없으므로 컴파일러에서 오류를 …

1
Rcpp 함수에서`new` 객체에 대한 포인터를 반환하는 올바른 방법
1) 잠재적으로 큰 메모리 인쇄를 가진 사용자 정의 클래스와 2) 일부 전처리를 수행 한 다음 사용자 정의 클래스의 새 오브젝트를 작성하여 리턴하는 최상위 기능을 고려하십시오. 값으로 불필요한 복사를 피하기 위해 함수는 객체를 할당하고 대신 포인터를 반환합니다. 이전 토론을 바탕으로 새로 만든 객체에 대한 포인터를 반환하는 올바른 방법은로 래핑하는 것 같습니다 …
9 c++  r  rcpp 

1
-fno-char8_t에 해당하는 MSVC는 무엇입니까?
C ++ 20에서 u8문자열 리터럴은 char8_t유형을 기반으로합니다 . 의도적으로 char const*더 이상 변환하지 않습니다 . const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 물론 C ++ 20으로 마이그레이션 할 때 궁극적 인 목표는 완전히 새로운 동작 (위의 예 : 유형 변경)을 따르는 것입니다 str. 그러나 타사 …

1
배열 데이터 수정을 방지하는 방법은 무엇입니까?
다음과 같은 클래스가 있다고 가정 해보십시오 (이것은 단지 예일뿐입니다). class A { double *ptr; public: A() : ptr( new double[100] ) {} A( const A &other ) { other.ptr[7] = 15; } void doNotChangeMyData() const { ptr[43] = 14; } void changeMyData() { ptr[43] = 14; } ~A() { delete[] …
9 c++  const 

1
std :: lock_guard가 std :: mutex :: lock ()보다 어떻게 빠를 수 있습니까?
나는 동료와 lock_guard에 대해 논쟁하고 있었고, lock_guard는 클래스 lock_guard를 인스턴스화하고 unistantiate하는 비용 때문에 아마도 mutex :: lock () / mutex :: unlock ()보다 느릴 것이라고 제안했다. 그런 다음이 간단한 테스트를 작성했으며 놀랍게도 lock_guard가있는 버전은 mutex :: lock () / mutex :: unlock ()이있는 버전보다 거의 두 배 빠릅니다. #include <iostream> …
9 c++  mutex 

2
안전한 암호화 키를 위해 std :: array에 사용자 지정 할당자를 사용할 수 있습니까?
std::array스택에 완전히 할당 된 것을 알고 있지만이 질문은 두 가지 사항이 필요한 보안 문제로 인해 발생합니다. std::array파괴시 데이터는 제로화되거나 무작위 화됩니다. 충돌이나 스왑 메모리에 디스크로 가지 않도록 데이터 std::array가 잠 깁니다 . 일반적으로와 함께 std::vector솔루션은 이러한 작업 을 수행 하는 사용자 지정 할당자를 만드는 것 입니다. 그러나에 std::array대해이 작업을 수행하는 …

4
자연어에서 C ++ 표현까지
할당: 다음 자연 언어 표현식을 C ++ 표현식으로 변환하십시오. 모든 변수가 음수가 아닌 숫자 또는 부울 (참 또는 거짓 값)이라고 가정하십시오. 자연어 : a와 b는 모두 false이거나 c는 true이지만 둘다는 아닙니다. 내 해결책 : (a==0 && b==0)xor(c==1) 교수 솔루션 : (!a && !b) != c 질문 : 나는 "not-a"와 "not-b"라고 …
9 c++  logic 

1
“강하게 전에 일어난다”는 무슨 뜻입니까?
C ++ 초안 표준에서는 "강하게 발생합니다"라는 문구가 여러 번 사용되었습니다. 예 : 종료 [basic.start.term] / 5 std :: atexit ([support.start.term] 참조)를 호출하기 전에 정적 저장 기간이있는 객체의 초기화 완료가 강력하게 발생하면 함수 호출이 std :: atexit에 전달되었습니다. 객체의 소멸자를 호출하기 전에 시퀀스됩니다. 정적 저장 시간으로 객체의 초기화가 완료되기 전에 std …

1
다른 스레드에서 동시 _ 벡터를 반복하면서 동시성 : : concurrent_vector : : push_back을 호출하는 것이 동시성 안전합니까?
push_back , begin , end 는 https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back에 동시 안전으로 설명되어 있습니다. 그러나 아래 코드는 주장입니다. 요소가 추가되었지만 아직 초기화되지 않았기 때문일 수 있습니다. struct MyData { explicit MyData() { memset(arr, 0xA5, sizeof arr); } std::uint8_t arr[1024]; }; struct MyVec { concurrency::concurrent_vector<MyData> v; }; auto vector_pushback(MyVec &vec) -> void { vec.v.push_back(MyData{}); …


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.