- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
考虑
struct C {
C() { printf("C::C()\n" ); }
C(int) { printf("C::C(int)\n" ); }
C( const C& ) { printf("copy-constructed\n"); }
};
还有一个模板函数
template< typename T > void foo(){
// default-construct a temporary variable of type T
// this is what the question is about.
T t1; // will be uninitialized for e.g. int, float, ...
T t2 = T(); // will call default constructor, then copy constructor... :(
T t3(); // deception: this is a local function declaration :(
}
int main(){
foo();
foo();
}
查看t1
,当T
为例如整数
。另一方面,t2
Sẽ复制构造自一个默认构造的临时变量。
问题:在 C++ 中是否可以默认构造泛型变量,而不是使用 template-fu?
1 Câu trả lời
这里有一个你可以使用的技巧,使用本地类:
template void foo() {
struct THolder {
T obj;
THolder() : obj() { } // value-initialize obj
};
THolder t1; // t1.obj is value-initialized
}
我想我是从另一个 Stack Overflow 问题的答案中了解到这个技巧的,但我目前找不到那个问题。
或者,您可以使用 boost::value_initialized
类模板,它基本上做同样的事情,具有更大的灵 active 和一致性,并为有问题的编译器提供了变通办法。
在 C++0x 中,这要容易得多:您可以使用一个空的初始化列表:
T obj{}; // obj is value-initialized
(据我所知,只有 gcc 4.5+ 支持 C++0x 初始化列表。Clang 和 Visual C++ 尚不支持它们。)
关于c++ - 模板函数 : default construction without copy-constructing in C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5303019/
Làm thế nào để chuyển đổi mã jQuery sang React JS? Tôi có một nút có nội dung "Sao chép". Khi tôi nhấp vào đó, văn bản sẽ đổi thành "Đã sao chép" và sao chép vào bảng tạm. Sau khi sao chép, sau vài giây tôi muốn văn bản trở về trạng thái "Đã sao chép". Tôi tin rằng chức năng sau đây sẽ
Có trường hợp nào tôi muốn sử dụng phương thức np.copy() của NumPy thay vì phương thức copy.copy() của Python không? Theo tôi biết, cả hai đều tạo ra các bản sao nông, nhưng NumPy bị giới hạn ở mảng. NumPy có hiệu suất nào không?
%python -m timeit -s "import copy" "x = (1, 2, 3)" "copy.deepcopy(x)" 100000 vòng lặp, tốt nhất trong 3: 10.1
Tôi muốn tạo một bản sao của một danh sách (nghĩa đen là một bản sao riêng biệt không có điểm gì giống với danh sách gốc). Tôi đã sử dụng copy.copy() và tạo 2 danh sách riêng biệt, nhưng tại sao các phần tử của mỗi bản sao vẫn có vẻ như được chia sẻ? Điều này khó giải thích, vui lòng xem thông tin đầu vào sau
Tôi không hiểu hành vi của lệnh COPY khi sử dụng ký tự đại diện. Tôi có một tệp văn bản có tên là mpt*.asm trong C:\Source và tôi muốn sao chép nó vào C:\Dest. Điều này cần thiết cho một tập lệnh hàng loạt. Tôi không chắc liệu mpt*.asm có thực sự
Có liên quan nhưng không tương đương với: Golang: Làm thế nào để sao chép đối tượng Context mà không cần suy ra Có thể suy ra context.WithTimeout từ context.Ba không
Bạn có thể triển khai đặc điểm Copy để cung cấp ngữ nghĩa sao chép thay vì ngữ nghĩa di chuyển cho một kiểu. Điều này chỉ có thể thực hiện được nếu tất cả các thành phần cấu thành của nó (mỗi yếu tố của một loại sản phẩm hoặc mỗi yếu tố của mỗi biến thể của một loại tổng) cũng là bản sao. Điều này cũng cho phép bạn tạo ra các loại khá lớn
Tôi có một đoạn mã cần xác định loại giá trị được mã hóa, nhưng tôi không biết đó là chuỗi, số nguyên không dấu hay vectơ chuỗi. Tôi muốn làm những việc sau đây:. Tuy nhiên, giá trị từ thùng Bend không thể được sao chép, nó sẽ được thực hiện sau khi gọi Decode_Bencode_Object
Tôi cần sao chép một số đối tượng và tôi đọc được rằng mô-đun copy.copy có thể thực hiện việc này trên Python. Vấn đề là các đối tượng này có một số thuộc tính là mảng dài. Vậy phương pháp này có hiệu quả không? Bởi vì hiệu suất là yếu tố quan trọng trong công việc tôi làm. Có cách nào tốt hơn không?
Tôi đang cố gắng tạo bản sao của bảng lua một cách hiệu quả. Tôi đã viết hàm copyTable() sau (xem bên dưới) hoạt động tốt. Nhưng tôi đoán tôi có thể có được thứ gì đó hiệu quả hơn bằng cách sử dụng cơ chế "truyền theo giá trị" của hàm. Tôi đã thực hiện một số thử nghiệm để khám phá cơ chế này:
Sử dụng plugin pry: pry-clipboard Khi tôi nhập "copy-history" để sao chép dòng cuối cùng trong lịch sử, thực tế là nó sẽ sao chép "copy-history" và dán "copy-history". Tôi có phải là
đóng cửa. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại câu hỏi này không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi cho phù hợp với chủ đề của Stack Overflow. Đã đóng 11 tháng trước. Cải thiện điều này
Tôi không hiểu sự khác biệt trong Kotlin giữa việc xử lý các trường thông qua bộ truy cập và phương thức sao chép. Giống như thế này: Ví dụ về khách truy cập: lớp Person(val name: String, var age: Int
Cách sao chép một số thuộc tính từ một nút. Ví dụ. Tôi chỉ muốn sao chép "Srno", "RollNo", "right" từ nút "Extn".
Tôi có hai chuyển đổi XSL sau đây mà tôi muốn liên kết thành một tệp XSL. Chuyển đổi đầu tiên: Chuyển đổi thứ hai (sử dụng đầu ra của chuyển đổi đầu tiên làm đầu vào): Mục tiêu của tôi là lấy đầu ra từ WSDL
Tôi mới sử dụng Vertica DB và đã từng sử dụng Mysql trước đây. Tôi muốn chèn bản ghi duy nhất vào bảng vertica nhưng vertica không hỗ trợ ràng buộc duy nhất khi chèn. Tôi chèn bản ghi vào bảng thông qua truy vấn COPY. Vì vậy tôi không thể chèn
Có mối quan hệ chính thức nào giữa std::copy và tham số chính sách thực thi không? Cả trong thực tế và trong tiêu chuẩn. Ví dụ, nó sẽ chỉ là, không gian tên std{ mẫu Nó sao chép (std::
Tôi đã chạy lệnh sau với tư cách là root để sao lưu một thư mục trên cùng một máy chủ: cp -r master kích thước của master: 76GB kích thước của master-backup: 71GB Bạn có biết lý do tại sao không
Tôi tình cờ gặp phải một đoạn mã mà thoạt nhìn có vẻ chẳng có ý nghĩa gì. Nhưng tôi nhận ra điều này có thể có một số hàm ý chưa biết mà tôi không biết, vì Python không phải là ngôn ngữ mà tôi quen thuộc nhất. nhập bản sao node = copy.copy(node) Đọc
Tôi đang thiết kế một lớp cơ sở và muốn nó xác định hành vi cơ bản cho copy.copy. Hành vi này bao gồm việc in cảnh báo ra bảng điều khiển rồi sao chép phiên bản như thể nó không có lệnh __copy__. tài sản. Khi định nghĩa một lớp Foo trống và sao chép một thể hiện của nó,
Tôi là một lập trình viên xuất sắc, rất giỏi!