However, in the following code... how to ensure "classA* ca" memory is
not leaked?
#include <iostream>
class classA {
public:
classA() { std::cout << "classA ctor." << std::endl; }
~classA() { std::cout << "classA dtor." << std::endl; }
private:
};
class classB {
public:
classB() {
throw "oops";
std::cout << "classB ctor." << std::endl;
}
~classB() { std::cout << "classB dtor." << std::endl; }
private:
};
class classD {
public:
classD() : ca(new classA), cb(new classB) {
std::cout << "classD ctor." << std::endl;
}
~classD() {
std::cout << "classD dtor." << std::endl;
delete cb;
delete ca;
}
private:
classA* ca;
classB* cb;
};
int main(int argc, char** argv) {
classD cd;
// code continues...
// how to release "classA* ca" in classD object (in cd above)?
}