diff --git a/quiche/quic/core/congestion_control/bandwidth_sampler.cc b/quiche/quic/core/congestion_control/bandwidth_sampler.cc
index 5f7f939..432fd51 100644
--- a/quiche/quic/core/congestion_control/bandwidth_sampler.cc
+++ b/quiche/quic/core/congestion_control/bandwidth_sampler.cc
@@ -8,11 +8,17 @@
 #include <cstddef>
 #include <ostream>
 
+#include "quiche/quic/core/congestion_control/send_algorithm_interface.h"
+#include "quiche/quic/core/quic_bandwidth.h"
+#include "quiche/quic/core/quic_packet_number.h"
+#include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
+#include "quiche/quic/core/quic_unacked_packet_map.h"
 #include "quiche/quic/platform/api/quic_bug_tracker.h"
 #include "quiche/quic/platform/api/quic_flag_utils.h"
 #include "quiche/quic/platform/api/quic_flags.h"
 #include "quiche/quic/platform/api/quic_logging.h"
+#include "quiche/common/platform/api/quiche_logging.h"
 
 namespace quic {
 
@@ -135,21 +141,9 @@
 BandwidthSampler::BandwidthSampler(
     const QuicUnackedPacketMap* unacked_packet_map,
     QuicRoundTripCount max_height_tracker_window_length)
-    : total_bytes_sent_(0),
-      total_bytes_acked_(0),
-      total_bytes_lost_(0),
-      total_bytes_neutered_(0),
-      total_bytes_sent_at_last_acked_packet_(0),
-      last_acked_packet_sent_time_(QuicTime::Zero()),
-      last_acked_packet_ack_time_(QuicTime::Zero()),
-      is_app_limited_(true),
-      connection_state_map_(),
-      max_tracked_packets_(GetQuicFlag(quic_max_tracked_packet_count)),
+    : max_tracked_packets_(GetQuicFlag(quic_max_tracked_packet_count)),
       unacked_packet_map_(unacked_packet_map),
-      max_ack_height_tracker_(max_height_tracker_window_length),
-      total_bytes_acked_after_last_ack_event_(0),
-      overestimate_avoidance_(false),
-      limit_max_ack_height_tracker_by_send_rate_(false) {
+      max_ack_height_tracker_(max_height_tracker_window_length) {
   const size_t preallocate_count =
       GetQuicFlag(quic_preallocate_unacked_packets);
   if (preallocate_count > 0) {
@@ -157,30 +151,7 @@
   }
 }
 
-BandwidthSampler::BandwidthSampler(const BandwidthSampler& other)
-    : total_bytes_sent_(other.total_bytes_sent_),
-      total_bytes_acked_(other.total_bytes_acked_),
-      total_bytes_lost_(other.total_bytes_lost_),
-      total_bytes_neutered_(other.total_bytes_neutered_),
-      total_bytes_sent_at_last_acked_packet_(
-          other.total_bytes_sent_at_last_acked_packet_),
-      last_acked_packet_sent_time_(other.last_acked_packet_sent_time_),
-      last_acked_packet_ack_time_(other.last_acked_packet_ack_time_),
-      last_sent_packet_(other.last_sent_packet_),
-      last_acked_packet_(other.last_acked_packet_),
-      is_app_limited_(other.is_app_limited_),
-      end_of_app_limited_phase_(other.end_of_app_limited_phase_),
-      connection_state_map_(other.connection_state_map_),
-      recent_ack_points_(other.recent_ack_points_),
-      a0_candidates_(other.a0_candidates_),
-      max_tracked_packets_(other.max_tracked_packets_),
-      unacked_packet_map_(other.unacked_packet_map_),
-      max_ack_height_tracker_(other.max_ack_height_tracker_),
-      total_bytes_acked_after_last_ack_event_(
-          other.total_bytes_acked_after_last_ack_event_),
-      overestimate_avoidance_(other.overestimate_avoidance_),
-      limit_max_ack_height_tracker_by_send_rate_(
-          other.limit_max_ack_height_tracker_by_send_rate_) {}
+BandwidthSampler::BandwidthSampler(const BandwidthSampler& other) = default;
 
 void BandwidthSampler::EnableOverestimateAvoidance() {
   if (overestimate_avoidance_) {
@@ -193,8 +164,6 @@
   max_ack_height_tracker_.SetAckAggregationBandwidthThreshold(2.0);
 }
 
-BandwidthSampler::~BandwidthSampler() {}
-
 void BandwidthSampler::OnPacketSent(
     QuicTime sent_time, QuicPacketNumber packet_number, QuicByteCount bytes,
     QuicByteCount bytes_in_flight,
diff --git a/quiche/quic/core/congestion_control/bandwidth_sampler.h b/quiche/quic/core/congestion_control/bandwidth_sampler.h
index 457dbcd..9b56a8f 100644
--- a/quiche/quic/core/congestion_control/bandwidth_sampler.h
+++ b/quiche/quic/core/congestion_control/bandwidth_sampler.h
@@ -5,17 +5,20 @@
 #ifndef QUICHE_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_
 #define QUICHE_QUIC_CORE_CONGESTION_CONTROL_BANDWIDTH_SAMPLER_H_
 
+#include <cstdint>
+#include <ostream>
+
 #include "quiche/quic/core/congestion_control/send_algorithm_interface.h"
 #include "quiche/quic/core/congestion_control/windowed_filter.h"
 #include "quiche/quic/core/packet_number_indexed_queue.h"
 #include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_packet_number.h"
-#include "quiche/quic/core/quic_packets.h"
 #include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_unacked_packet_map.h"
-#include "quiche/quic/platform/api/quic_export.h"
 #include "quiche/quic/platform/api/quic_flags.h"
+#include "quiche/common/platform/api/quiche_export.h"
+#include "quiche/common/platform/api/quiche_logging.h"
 #include "quiche/common/quiche_circular_deque.h"
 
 namespace quic {
@@ -27,14 +30,7 @@
 // A subset of BandwidthSampler::ConnectionStateOnSentPacket which is returned
 // to the caller when the packet is acked or lost.
 struct QUICHE_EXPORT SendTimeState {
-  SendTimeState()
-      : is_valid(false),
-        is_app_limited(false),
-        total_bytes_sent(0),
-        total_bytes_acked(0),
-        total_bytes_lost(0),
-        bytes_in_flight(0) {}
-
+  SendTimeState() = default;
   SendTimeState(bool is_app_limited, QuicByteCount total_bytes_sent,
                 QuicByteCount total_bytes_acked, QuicByteCount total_bytes_lost,
                 QuicByteCount bytes_in_flight)
@@ -52,28 +48,28 @@
                                                 const SendTimeState& s);
 
   // Whether other states in this object is valid.
-  bool is_valid;
+  bool is_valid = false;
 
   // Whether the sender is app limited at the time the packet was sent.
   // App limited bandwidth sample might be artificially low because the sender
   // did not have enough data to send in order to saturate the link.
-  bool is_app_limited;
+  bool is_app_limited = false;
 
   // Total number of sent bytes at the time the packet was sent.
   // Includes the packet itself.
-  QuicByteCount total_bytes_sent;
+  QuicByteCount total_bytes_sent = 0;
 
   // Total number of acked bytes at the time the packet was sent.
-  QuicByteCount total_bytes_acked;
+  QuicByteCount total_bytes_acked = 0;
 
   // Total number of lost bytes at the time the packet was sent.
-  QuicByteCount total_bytes_lost;
+  QuicByteCount total_bytes_lost = 0;
 
   // Total number of inflight bytes at the time the packet was sent.
   // Includes the packet itself.
   // It should be equal to |total_bytes_sent| minus the sum of
   // |total_bytes_acked|, |total_bytes_lost| and total neutered bytes.
-  QuicByteCount bytes_in_flight;
+  QuicByteCount bytes_in_flight = 0;
 };
 
 struct QUICHE_EXPORT ExtraAckedEvent {
@@ -340,7 +336,6 @@
   // Copy states from |other|. This is useful when changing send algorithms in
   // the middle of a connection.
   BandwidthSampler(const BandwidthSampler& other);
-  ~BandwidthSampler() override;
 
   void OnPacketSent(QuicTime sent_time, QuicPacketNumber packet_number,
                     QuicByteCount bytes, QuicByteCount bytes_in_flight,
@@ -502,12 +497,7 @@
 
     // Default constructor.  Required to put this structure into
     // PacketNumberIndexedQueue.
-    ConnectionStateOnSentPacket()
-        : sent_time_(QuicTime::Zero()),
-          size_(0),
-          total_bytes_sent_at_last_acked_packet_(0),
-          last_acked_packet_sent_time_(QuicTime::Zero()),
-          last_acked_packet_ack_time_(QuicTime::Zero()) {}
+    ConnectionStateOnSentPacket() = default;
 
     friend QUICHE_EXPORT std::ostream& operator<<(
         std::ostream& os, const ConnectionStateOnSentPacket& p) {
@@ -521,11 +511,11 @@
     }
 
    private:
-    QuicTime sent_time_;
-    QuicByteCount size_;
-    QuicByteCount total_bytes_sent_at_last_acked_packet_;
-    QuicTime last_acked_packet_sent_time_;
-    QuicTime last_acked_packet_ack_time_;
+    QuicTime sent_time_ = QuicTime::Zero();
+    QuicByteCount size_ = 0;
+    QuicByteCount total_bytes_sent_at_last_acked_packet_ = 0;
+    QuicTime last_acked_packet_sent_time_ = QuicTime::Zero();
+    QuicTime last_acked_packet_ack_time_ = QuicTime::Zero();
     SendTimeState send_time_state_;
   };
 
@@ -555,27 +545,27 @@
   bool ChooseA0Point(QuicByteCount total_bytes_acked, AckPoint* a0);
 
   // The total number of congestion controlled bytes sent during the connection.
-  QuicByteCount total_bytes_sent_;
+  QuicByteCount total_bytes_sent_ = 0;
 
   // The total number of congestion controlled bytes which were acknowledged.
-  QuicByteCount total_bytes_acked_;
+  QuicByteCount total_bytes_acked_ = 0;
 
   // The total number of congestion controlled bytes which were lost.
-  QuicByteCount total_bytes_lost_;
+  QuicByteCount total_bytes_lost_ = 0;
 
   // The total number of congestion controlled bytes which have been neutered.
-  QuicByteCount total_bytes_neutered_;
+  QuicByteCount total_bytes_neutered_ = 0;
 
   // The value of |total_bytes_sent_| at the time the last acknowledged packet
   // was sent. Valid only when |last_acked_packet_sent_time_| is valid.
-  QuicByteCount total_bytes_sent_at_last_acked_packet_;
+  QuicByteCount total_bytes_sent_at_last_acked_packet_ = 0;
 
   // The time at which the last acknowledged packet was sent. Set to
   // QuicTime::Zero() if no valid timestamp is available.
-  QuicTime last_acked_packet_sent_time_;
+  QuicTime last_acked_packet_sent_time_ = QuicTime::Zero();
 
   // The time at which the most recent packet was acknowledged.
-  QuicTime last_acked_packet_ack_time_;
+  QuicTime last_acked_packet_ack_time_ = QuicTime::Zero();
 
   // The most recently sent packet.
   QuicPacketNumber last_sent_packet_;
@@ -585,7 +575,7 @@
 
   // Indicates whether the bandwidth sampler is currently in an app-limited
   // phase.
-  bool is_app_limited_;
+  bool is_app_limited_ = true;
 
   // The packet that will be acknowledged after this one will cause the sampler
   // to exit the app-limited phase.
@@ -613,13 +603,13 @@
       const ConnectionStateOnSentPacket& sent_packet);
 
   MaxAckHeightTracker max_ack_height_tracker_;
-  QuicByteCount total_bytes_acked_after_last_ack_event_;
+  QuicByteCount total_bytes_acked_after_last_ack_event_ = 0;
 
   // True if connection option 'BSAO' is set.
-  bool overestimate_avoidance_;
+  bool overestimate_avoidance_ = false;
 
   // True if connection option 'BBRB' is set.
-  bool limit_max_ack_height_tracker_by_send_rate_;
+  bool limit_max_ack_height_tracker_by_send_rate_ = false;
 };
 
 }  // namespace quic
