C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.
26 lines
607 B
26 lines
607 B
21 years ago
|
#include <mrw/smartpointer.hpp>
|
||
|
|
||
|
class A {
|
||
|
public: int a;
|
||
|
protected: virtual void fn() {} // dynamic_cast requires a virtual function
|
||
|
};
|
||
|
|
||
|
class B: virtual public A {
|
||
|
public: int b;
|
||
|
};
|
||
|
|
||
|
int main(int, char**) {
|
||
|
utl::SmartPointer<int> i1 = new int;
|
||
|
*i1 = 13;
|
||
|
utl::SmartPointer<int> i2 = i1;
|
||
|
utl::SmartPointer<int> i3;
|
||
|
if (!i3) i3 = i2;
|
||
|
*i2 = 666; // *i1 is now 666 too
|
||
|
utl::SmartPointer<A> b1 = new B;
|
||
|
utl::SmartPointer<B> b2 = b1; // b1 and b2 point to the same instance
|
||
|
b1->a = 0; // b1->b does not compile
|
||
|
b2->a = 1;
|
||
|
b2->b = 2;
|
||
|
return 0;
|
||
|
} // memory is automatically freed
|