71 lines
1.2 KiB
C++
71 lines
1.2 KiB
C++
//
|
|
// Created by light on 19-12-15.
|
|
//
|
|
|
|
#include <iostream>
|
|
#include "shape.h"
|
|
|
|
using namespace std;
|
|
|
|
class result {
|
|
public:
|
|
result() { puts("result()"); }
|
|
|
|
~result() { puts("~result()"); }
|
|
};
|
|
|
|
result process_shape(const shape &shape1, const shape &shape2) {
|
|
puts("process_shape()");
|
|
return result();
|
|
}
|
|
|
|
|
|
class Base {
|
|
public:
|
|
Base() {
|
|
cout << "Base()" << endl;
|
|
}
|
|
|
|
~Base() {
|
|
cout << "~Base()" << endl;
|
|
}
|
|
};
|
|
|
|
class Derived : public Base {
|
|
public:
|
|
Derived() {
|
|
cout << "Derived()" << endl;
|
|
}
|
|
|
|
~Derived() {
|
|
cout << "~Derived()" << endl;
|
|
}
|
|
};
|
|
|
|
string f() { return "abc"; }
|
|
|
|
void g() {
|
|
const string &s = f(); // still legal?
|
|
cout << s << endl;
|
|
}
|
|
|
|
Derived factory() {
|
|
return Derived();
|
|
}
|
|
|
|
int main() {
|
|
process_shape(circle(), triangle());
|
|
cout << endl;
|
|
// 临时对象延迟
|
|
// result &&r = process_shape(circle(), triangle());
|
|
// 临时对象延迟只对rvalue有用,而对xvalue无用!
|
|
// result &&r = std::move(process_shape(circle(), triangle()));
|
|
|
|
// const Base &b1 = factory();
|
|
|
|
Base *b1 = new Derived;
|
|
delete b1;
|
|
cout<<endl;
|
|
Derived d;
|
|
Base &b2 =d;
|
|
} |