class A{
public:
A()
{
std::cout << "A" << std::endl;
}
~A()
{
std::cout << "~A" << std::endl;
}
};
class B{
public:
B()
{
std::cout << "B" << std::endl;
}
~B()
{
std::cout << "~B" << std::endl;
}
};
int main()
{
A a;
B b;
}
問: 上述輸出為何?
答:
A
B
~B
~A
問: 應用場景
答: 機算機資源控管,稱為RAII範式
//
// 沒C++ 可以寫 轉戰 C# 的工程師看這
//
class A : IDisposable
{
public A()
{
Console.WriteLine("A()");
}
void Dispose()
{
Console.WriteLine("~A()");
}
}
class B : IDisposable
{
public B()
{
Console.WriteLine("B()");
}
void Dispose()
{
Console.WriteLine("~B()");
}
}
static void Main(string[] args)
{
using (var a = new A { })
{
using (var b = new B { })
{
}
}
}
// 沒C++ 可以寫 轉戰 Java 的工程師看這, Java 8以上可用
// 但是很多專案還是用Java 6, Java 7 包含 Android
public class A implements AutoCloseable
{
public A()
{
System.out.println("A()");
}
@Override
public void close() throws Exception
{
System.out.println("~A()");
}
}
public class B implements AutoCloseable
{
public B()
{
System.out.println("B()");
}
@Override
public void close() throws Exception
{
System.out.println("~B()");
}
}
public static void main(String[] args)
{
try (A a = new A() )
{
try (B b = new B() )
{
}
}
}
留言列表