Hãy xem xét những điều sau tình huống (giản thể):Các biến thành viên có thể được sử dụng để khởi tạo các thành viên khác trong danh sách khởi tạo không?
class Foo
{
private:
int evenA;
int evenB;
int evenSum;
public:
Foo(int a, int b) : evenA(a-(a%2)), evenB(b-(b%2)), evenSum(evenA+evenB)
{
}
};
Khi tôi instanciate Foo như thế này:
Foo foo(1,3);
sau đó evenA là 0, evenB là 2, nhưng evenSum sẽ được khởi tạo tới 2?
Tôi đã thử tính năng này trên nền tảng hiện tại của mình (iOS) và có vẻ như hoạt động, nhưng tôi không chắc liệu mã này có thể di chuyển hay không.
Cảm ơn sự giúp đỡ của bạn!
Đây là một trong những góc nguy hiểm trong C++. – iammilind
Codepad là nơi tuyệt vời để kiểm tra những thứ như vậy: http://codepad.org/uFgZpkwN –
@Agent_L: Điều đó sẽ không cho bạn biết mã có thể di chuyển hay không. –