对象所产生的构造函数,复制构造函数,析构,赋值函数
2014-06-30 20:14
204 查看
#include <iostream>
#include <vector>
using namespace std;
class Foo {
public:
Foo() {
cout << "Foo constructor" << endl;
}
Foo(const Foo&) {
cout << "Foo copy constructor" << endl;
}
Foo& operator= (const Foo&) {
cout << "Foo operator =" << endl;
return *this;
}
~Foo() {
cout << "Foo destructor" << endl;
}
};
int f(Foo) {
return 0;
}
int g(const Foo&) {
return 0;
}
Foo h() {
Foo foo;
return foo;
}
int main(void) {
int i=1;
cout<<i++<<endl;
Foo vf1;
cout<<i++<<endl;
f(vf1);
cout<<i++<<endl;
g(vf1);
cout<<i++<<endl;
Foo vf2 = vf1;
cout<<i++<<endl;
vf2 = h();
cout<<i++<<endl;
Foo *pf = new Foo();
cout<<i++<<endl;
delete pf;
cout<<i++<<endl;
vector<Foo> vecf(3);
cout<<i++<<endl;
return 0;
}
#include <vector>
using namespace std;
class Foo {
public:
Foo() {
cout << "Foo constructor" << endl;
}
Foo(const Foo&) {
cout << "Foo copy constructor" << endl;
}
Foo& operator= (const Foo&) {
cout << "Foo operator =" << endl;
return *this;
}
~Foo() {
cout << "Foo destructor" << endl;
}
};
int f(Foo) {
return 0;
}
int g(const Foo&) {
return 0;
}
Foo h() {
Foo foo;
return foo;
}
int main(void) {
int i=1;
cout<<i++<<endl;
Foo vf1;
cout<<i++<<endl;
f(vf1);
cout<<i++<<endl;
g(vf1);
cout<<i++<<endl;
Foo vf2 = vf1;
cout<<i++<<endl;
vf2 = h();
cout<<i++<<endl;
Foo *pf = new Foo();
cout<<i++<<endl;
delete pf;
cout<<i++<<endl;
vector<Foo> vecf(3);
cout<<i++<<endl;
return 0;
}
相关文章推荐
- C++不能中断构造函数来拒绝产生对象(在构造和析构中抛出异常)
- C++构造,析构,友元类,对象,static成员,复制构造函数,运算符重载杂谈
- 使用容器时一定要保证容器中的对象是可以复制、独立析构的
- 析构函数、复制构造函数、赋值函数什么时候必须显式定义
- 类中的构造函数,析构函数,复制构造函数,赋值函数
- c++类临时对象、复制构造函数、析构函数 VS2017 与gcc 编译器对比
- 对象的构造与析构(2) 构造函数规则
- 拷贝(复制)构造函数和赋值函数
- 强化训练3--构造函数中调用构造(产生匿名对象)
- 详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
- C++的对象复制构造函数与赋值操作符重载的区别小结
- C++13.1.2合成复制构造函数----定义复制对象时会发生什么
- C++返回值为对象时复制构造函数不执行怎么办
- 写一个类的构造函数、复制构造函数、析构函数、赋值函数
- C++ primer 学习记录:面对对象编程之构造函数和复制控制
- c++OOP之复制控制 ------复制构造函数、赋值重载、析构
- 关于对象的构造、复制构造、析构、赋值的问题
- 对象作为参数和返回值 复制(拷贝)构造函数
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- c++的构造函数,析构函数,复制函数,赋值函数,深复制